我想知道如何使用粘贴创建变量名称(已存在的变量),然后访问该变量。
示例:
var<-c("A","B","C")
for (i in 1:3){
paste0("var")[i]
}
注意:假设我需要使用 paste0
来创建变量名称(我正在处理 data.frames 并使用 paste0
来创建不同列的变量)
谢谢!
编辑:
好吧,这是大局:
我有两个数据框:smallDF
和 bigDF
。我想将数据从bigDF复制到smallDF。匹配是通过user_name
完成的。
user <- c("userA","userB","userC")
variables<-c("user_age","user_city","user_street")
for (t in 1:length(variables)){
for (j in 1:length(user)){
x<-paste0("bigDF$",variables[t])
y<-paste0("smallDF$",variables[t])
tmp<-unique(x[which(bigDF$user_name==user[j])])[1] # unique will only yield one entry
replace<-c(as.character(rep(tmp,length(y[which(smallDF$user_name==user[j])]))))
y[which(smallDF$user_name==user[j])]<-replace
}
}
上面的代码不起作用。但是,当我避免第一个 for 循环并将 x 和 y 替换为各自的变量名称(bigDF$user_age 等)时,一切正常。这就是为什么我认为必须有一种简单的方法可以使用外部 for 循环动态创建这些变量名称。 谢谢大家!
最佳答案
首先查看帮助?"[["
,然后可能查看fortune(312)
。问题是,在这个过程中,您了解了神奇的 $
快捷方式,但没有正确了解它的用途,并且觉得在它是之间最长距离的情况下需要使用该快捷方式2 分(有点像尝试从伦敦到巴黎时使用纽约市和波士顿之间的捷径)。
如果您使用像 bigDF[[ Variables[t] ]]
这样的代码而不是尝试使用 $
那么它将访问 bigDF
列code> 与当前在 variables[t]
中的名称。
学习正确使用 [[
和其他子集(仅在适当的情况下使用 $
),您的整个过程将大大简化。
关于R:如何访问已动态创建名称的变量(使用粘贴),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18848597/