通过字符串输入创建变量

时间:2013-12-08 19:26:22

标签: r

我正在尝试创建一个生成变量的循环。但我需要一种方法来使用输入法命名变量。在变量生成

中输入字符串名称的惯例是什么

X = “变” Y = “重量” Z = “高度”

XY =膏(X,Y,月= “”) XZ =膏(X,Y,月= “”)

xy_one = 1:10 xy_two = 11:20

因此xy_one应该命名为VariableWeight_one 和xz_two应该是名称Variableheight_two

2 个答案:

答案 0 :(得分:1)

真正的答案是:不要这样做。创建listdataframe变量,将数据转储到相同的元素中,然后为这些元素指定名称,这样会更容易,也更有效率。在你的情况下,

mydata<- list()
mydata$VariableWeight_one <- xy_one
mydata$Variableheight_two <- xy_two

答案 1 :(得分:1)

同意Carl不要这样做,但我认为他的方法可以通过使用“[[”而不是“$”来改进。尝试:

myVars<-list()
x="Variable"; y="Weight"; z="Height"
myVars[[ paste(x,y,"_one", sep="")]] <- 1:10
myVars[[ paste(x,z,"_one", sep="")]] <- 11:20

如果你真的还想构建名字,我会写一个合适的补充:

 x="Variable"; y="Weight"; z="Height"
 assign( paste(x,y,"_one", sep=""),  1:10)
 assign( paste(x,z,"_one", sep=""), 11:20)
 ls(patt="Variable")
[1] "VariableHeight_one" "VariableWeight_one"

比较使用您的方法创建的第一个变量可能需要花费的努力(和语言迂回),以及从myVars中提取第一个元素的简单程度:

 eval(parse( text=ls(patt="Variable")[1] ))
# [1] 11 12 13 14 15 16 17 18 19 20

  myVars[[1]]
# [1]  1  2  3  4  5  6  7  8  9 10

(此外,它甚至不是正确的。)