提问人:this.is.not.a.nick 提问时间:9/12/2012 最后编辑:Ben Bolkerthis.is.not.a.nick 更新时间:4/11/2021 访问量:58314
变量前的美元符号
Dollar sign before a variable
问:
我有这个示例代码,用于从现有数据框“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
如何通过在美元符号后使用变量值来调用数据框的列?
答:
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$column
c
Error 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.symbol
as.expression
quote
enquote
substitute
0赞
Emil Krabbe
5/4/2021
我想将 106 列添加到数据帧中,这些列是数据帧的长度,但填充了 0。如何循环此内容?for (i in vector) { df$i <- vector(,lengthdf) } ???
5赞
2 revsrankthefirst
#2
我想你需要.get()
例如,
其中 是列表,是变量(可以是字符串),等于 。get(x,list)
list
x
list$x
但是在 中,可以是变量,而使用 ,不能是变量。get(x,list)
x
$
x
1赞
Jossie Calderon
7/11/2016
#3
$
适用于列,而不是单个列对象。这是矢量化的一种形式。代码
corrections$BookDate = as.Date(corrections$BookDate, format = "%m/%d/%Y")
将表列的内容从字符串转换为对象。它通过一个操作(赋值)来执行它。BookDate
corrections
Date
执行以下操作,它将解决您的问题:
new_data <- rbind(new_data, c(cond, my_data$cond))
下一个:按组计算均值
评论
$
实际上并不打算以编程方式使用。它旨在为交互式使用提供便利。请尝试改用。但是,查看您的代码,我认为您可能会从查看函数或包中受益......mydata[i,cond]
reshape
reshape2
my_data
data.frame
new_data
matrix