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

标签 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 循环并将 x 和 y 替换为各自的变量名称(bigDF$user_age 等)时,一切正常。这就是为什么我认为必须有一种简单的方法可以使用外部 for 循环动态创建这些变量名称。 谢谢大家!

最佳答案

首先查看帮助?"[[",然后可能查看fortune(312)。问题是,在这个过程中,您了解了神奇的 $ 快捷方式,但没有正确了解它的用途,并且觉得在它是之间最长距离的情况下需要使用该快捷方式2 分(有点像尝试从伦敦到巴黎时使用纽约市和波士顿之间的捷径)。

如果您使用像 bigDF[[ Variables[t] ]] 这样的代码而不是尝试使用 $ 那么它将访问 bigDF 列code> 与当前在 variables[t] 中的名称。

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

关于R:如何访问已动态创建名称的变量(使用粘贴),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18848597/

相关文章:

r - 来自不同长度向量的样本(包括1个)

r - 将运算符分配给 R 变量

r - 用于准确预测的数据集中的最小行数

r - 使用 caret 包进行交叉验证的最终模型

r - 如何以正确的大小显示相关图中的 p 值?

r - 如何根据条件提取列名?

r - 生成一个以 "±"分隔的描述性统计表

r - 如何在R中的列表元素上应用均值函数

r - 如何从单独的日期字段创建日期时间对象?

从 csv 文件中读取数字,以点作为千位分隔符