通过一个字符和一个数据动态生成变量名[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"
确实有更好的方法来完成这件事,但这应该可以帮助您入门。
我可以通过动态组合数据集中的字符和值来在 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"
确实有更好的方法来完成这件事,但这应该可以帮助您入门。