我有这个示例代码从现有数据框'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是变量,而不是列名)不被接受。
如何在美元符号后面使用变量值来调用数据框的列?
答案 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