通过一个字符和一个数据动态生成变量名[R]

Generate the variable names by a character and a data dynamically[R]

我可以通过动态组合数据集中的字符和值来在 R 中生成变量名,并将新变量存储到向量中吗?例如,我们的数据集为

col1  col2
 8     4
 3     6
 4     3
 5     5

希望col1可以作为新变量名的一部分,col2可以作为新变量的值。比如我希望能得到如下结果,

x8 = 4, x3 = 6, x4 = 3, x5 = 5

其中变量名部分的数字8,3,4,5来自col1,"x"是我可以选择的字符。我也希望我可以自动将变量名存储到一个向量中。谢谢

不太清楚您要找的是什么...但这里有一个镜头

df <- read.table(textConnection("col1  col2
 8     4
 3     6
 4     3
 5     5"), header=T)
> df
  col1 col2
1    8    4
2    3    6
3    4    3
4    5    5
> paste0("x", df$col1)
[1] "x8" "x3" "x4" "x5"
a <- df$col2
names(a) <- paste0("x", df$col1)
> a
x8 x3 x4 x5 
 4  6  3  5 

不要到处自动创建变量名。这是一件坏事。如果您的数据项是相关的,您希望将它们存储在单个对象中。从长远来看,您可能会更快乐地列出清单。例如,以 df:

开头
n=list()
n[paste0("x",df$col1)]=df$col2

现在你可以通过n$x3获得一个值:

 > n$x3
 [1] 6

列表中的条目可以用names得到:

 > names(n)
 [1] "x8" "x3" "x4" "x5"

这里的好处是你没有用很多变量弄乱你的space而且你没有单独处理您创建的事物的名称列表。如果你想对所有这些值做一些事情,你只需循环列表中的条目。例如,哪些超过 4 岁?

> for(nm in names(n)){if(n[nm]>4){print(nm)}}
[1] "x3"
[1] "x5"

确实有更好的方法来完成这件事,但这应该可以帮助您入门。