R:如何访问一个已经动态创建的变量(带粘贴)

时间:2013-09-17 11:26:10

标签: r

我想知道如何使用粘贴创建变量名称(已存在的变量),然后访问此变量。

示例:

var<-c("A","B","C")

for (i in 1:3){
     paste0("var")[i] 
}

注意:假设我需要使用paste0来创建变量名称(我正在处理data.frames并使用paste0来创建不同列的变量)

谢谢!

编辑:

好的,这是更大的图片: 我有两个数据框:smallDFbigDF。我想将数据从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循环并用相应的变量名(bigDF $ user_age等)替换x和y时,一切正常。这就是为什么我认为必须有一个简单的方法来使用外部for循环动态创建这些变量名称。 谢谢大家!

2 个答案:

答案 0 :(得分:3)

首先查看帮助?"[[",然后查看fortune(312)。问题是你在线上的某个地方学到了神奇的$快捷方式而没有正确地了解它是什么的快捷方式,并且觉得你需要在2点之间的最长距离的情况下使用快捷方式(有点像使用纽约市和波士顿之间的捷径,试图从伦敦到巴黎)。

如果您使用bigDF[[ variables[t] ]]之类的代码而不是尝试使用$,则会访问bigDF的列,其名称当前位于variables[t]

学会正确使用[[和其他子集(仅在适当情况下使用$),您的整个过程将大大简化。

答案 1 :(得分:0)

解决方案:

    dat <- eval(parse(text="paste0"))
dat 中的

你有输出。