28

我有这个示例代码可以从现有数据框“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]))
    }
}

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

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

4

3 回答 3

39

要访问列,请使用:

my_data[ , cond]

或者

my_data[[cond]]

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

my_data[i, ]

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

my_data[i, cond]

或者

my_data[[cond]][i]
于 2012-09-12T13:45:13.343 回答
4

我猜你需要get().

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

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

于 2015-05-26T22:36:13.587 回答
1

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

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

将表格BookDate列的内容corrections从字符串转换为Date对象。它在一个操作中执行它,分配。

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

new_data <- rbind(new_data, c(cond, my_data$cond))
于 2016-07-10T19:16:48.463 回答