我想创建一个循环,该循环创建新变量并使用循环序列的值来命名该变量。在stata中,可以使用“ x”语法轻松完成此操作,如下所示。
foreach x of 1 2 3 4 5 {
gen newvar_`x' = `x'*1.2
}
这将产生5个名为
的变量newvar_1 = 1.2
newvar_2 = 2.4
newvar_3 = 3.6
newvar_4 = 4.8
newvar_5 = 6.0
我试图在r中执行以下代码来执行相同的操作。
for (i in c(1,2,3,4,5)){
newvar_i <- i*1.2
}
这将产生一个名为“ newvar_i”的变量,其值为6
我也尝试过这个。
for (i in c(1,2,3,4,5)){
paste("newvar_",i, sep = "") <- i*1.2
}
哪个会产生以下错误
"Error in paste("newvar_", i, sep = "") <- i*1.2 :
target of assignment expands to non-language object"
有人对我遇到的这个问题有解决方案吗?
答案 0 :(得分:0)
解决方案:(谢谢Onyambu)
for (I in c(1,2,3,4,5)){
assign(paste0('newvar_', I),I *1.2)
}
答案 1 :(得分:0)
如果您不熟悉R,请考虑采用这种方法。将这些值创建为列表,命名这些值,然后使用$
符号对其进行调用。
myVars <- as.list(1:5 * 1.2) # creates values
names(myVars) <- paste("newvar_", 1:5, sep = "") # names values
如果要调用特定值,请使用列表的名称(myVars),$
符号,然后使用值的名称。下面返回的值是newvar_1
myVars$newvar_1