变量前的美元符号

Dollar sign before a variable

提问人:this.is.not.a.nick 提问时间:9/12/2012 最后编辑:Ben Bolkerthis.is.not.a.nick 更新时间:4/11/2021 访问量:58314

问:

我有这个示例代码,用于从现有数据框“my_data”创建一个新的数据框“new_data”。

new_data = NULL
n = 10 #this number correspond to the number of rows in my_data
conditions = c("Bas_A", "Bas_T", "Oper_A", "Oper_T") # the vector characters correspond to the target column names in my_data
for (cond in conditions){
    for (i in 1:n){
        new_data <- rbind(new_data, c(cond, my_data$cond[i]))
    }
}

问题是(其中 cond 是一个变量,而不是列名)不被接受。my_data$cond

如何通过在美元符号后使用变量值来调用数据框的列?

数据帧 R-FAQ 美元符号

评论

11赞 James 9/12/2012
$实际上并不打算以编程方式使用。它旨在为交互式使用提供便利。请尝试改用。但是,查看您的代码,我认为您可能会从查看函数或包中受益......mydata[i,cond]reshapereshape2
0赞 GSee 9/12/2012
请注意,是 a 和 是 .my_datadata.framenew_datamatrix

答:

42赞 Sven Hohenstein 9/12/2012 #1

若要访问列,请使用:

my_data[ , cond]

my_data[[cond]]

可以通过以下方式访问第 1 行:i

my_data[i, ]

将两者结合起来以获得所需的值:

my_data[i, cond]

my_data[[cond]][i]

评论

0赞 Mahesha999 10/20/2016
我们不能用,矩阵在哪里?我得到了......c$columncError in c$col1 : $ operator is invalid for atomic vectors
0赞 Sven Hohenstein 10/21/2016
@Mahesha999 不能与矩阵一起使用。$
0赞 moodymudskipper 5/28/2018
出于好奇,例如,如果我们想利用 offers 支持的部分匹配,我们是否可以使用类似的东西,例如我不完全理解的函数或函数的混合,等等?$'$'(data,something(cond))as.symbolas.expressionquoteenquotesubstitute
0赞 Emil Krabbe 5/4/2021
我想将 106 列添加到数据帧中,这些列是数据帧的长度,但填充了 0。如何循环此内容?for (i in vector) { df$i <- vector(,lengthdf) } ???
5赞 2 revsrankthefirst #2

我想你需要.get()

例如,
其中 是列表,是变量(可以是字符串),等于 。
get(x,list)listxlist$x

但是在 中,可以是变量,而使用 ,不能是变量。get(x,list)x$x

1赞 Jossie Calderon 7/11/2016 #3

$适用于列,而不是单个列对象。这是矢量化的一种形式。代码

corrections$BookDate = as.Date(corrections$BookDate, format = "%m/%d/%Y")

将表列的内容从字符串转换为对象。它通过一个操作(赋值)来执行它。BookDatecorrectionsDate

执行以下操作,它将解决您的问题:

new_data <- rbind(new_data, c(cond, my_data$cond))