变量前的美元符号

时间:2012-09-12 13:29:27

标签: r dataframe dollar-sign

我有这个示例代码从现有数据框'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 个答案:

答案 0 :(得分:38)

要访问列,请使用:

my_data[ , cond]

my_data[[cond]]

可以使用以下方式访问i行:

my_data[i, ]

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

my_data[i, cond]

my_data[[cond]][i]

答案 1 :(得分:3)

我猜你需要get()

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

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

答案 2 :(得分:0)

corrections$BookDate = as.Date(corrections$BookDate, format = "%m/%d/%Y") 适用于列,而不适用于单个列对象。它是一种矢量化形式。代码

BookDate

corrections表的Date列的内容从字符串转换为new_data <- rbind(new_data, c(cond, my_data$cond)) 个对象。它在一个操作中执行它,分配。

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

{{1}}

答案 3 :(得分:0)

您经常需要选择整个列,即数据框中的一个特定变量。例如,如果要选择可变直径的所有元素,这两个元素都可以解决问题:

dataframe_name[,column_position]
dataframe_name[,"column_name"]

然而,有一个捷径。如果您的列有名称,则可以使用$符号:

dataframe_name$column_name