R:如何访问已动态创建名称的变量(使用粘贴)

R:如何访问已动态创建名称的变量(使用粘贴),r,R,我想知道如何使用paste创建一个变量名(已经存在的变量名),然后访问这个变量 例如: var<-c("A","B","C") for (i in 1:3){ paste0("var")[i] } 上面的代码不起作用。然而,当我避免第一个for循环并用相应的变量名(bigDF$user_age等)替换x和y时,一切都正常。这就是为什么我认为必须有一种简单的方法来使用外部for循环动态创建这些变量名。 谢谢大家 解决方案: dat <- eval(parse(t

我想知道如何使用paste创建一个变量名(已经存在的变量名),然后访问这个变量

例如:

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

for (i in 1:3){
     paste0("var")[i] 
}
上面的代码不起作用。然而,当我避免第一个for循环并用相应的变量名(bigDF$user_age等)替换x和y时,一切都正常。这就是为什么我认为必须有一种简单的方法来使用外部for循环动态创建这些变量名。 谢谢大家

解决方案:

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

dat首先查看帮助
?“[[”
,然后可能查看财富杂志(312)
。问题是,在这条路线上的某个地方,您了解了神奇的
$
快捷方式,但没有正确了解它是什么快捷方式,并且觉得在两点之间的最长距离的情况下需要使用该快捷方式(有点像从伦敦到巴黎时在纽约和波士顿之间走捷径)

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


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

你很可能不需要这个。展示你的全部任务,并展示更好的可能性。我同意@Roland的观点,这个问题并不完全清楚。告诉我们你想用这个实现什么,我们可能会提供更好、更有用的帮助。我真的不理解你的想法我们的代码非常复杂(由于缺少data.frames,因此不可复制)。但是,从您的问题描述来看,您似乎只是想合并两个data.frames。因此,也许
?merge
会对您有所帮助?@SPi您确实需要使用
merge
命令,并使用
for
循环和
paste0
忘记这些废话。我这样说是为了帮助。请添加
dput(head)的输出(small_-df)和
dput(head(big_-df))
让我们帮助您正确地理解
R
:-)我支持上面的评论。我打赌这一切都可以通过调用
merge()
来完成。如果您认为需要
eval(parse())
你应该退后一步,重新考虑你的整个方法……老实说,
get
mget
也是如此。@Roland我回答了这个问题。我认为我不关心可能的解决方案。这是一个新问题。@Laszlo and Raszsurzsa重点是,你提出的解决方案在更一般的问题上不是一个可靠的方法ems,所以一般不建议这样做。如果有人每小时更换一次问题,很难回答。顺便说一下,错误已经纠正了。
    dat <- eval(parse(text="paste0"))