使用循环序列的值创建和命名新变量

时间:2018-09-09 08:12:39

标签: r stata

我想创建一个循环,该循环创建新变量并使用循环序列的值来命名该变量。在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"

有人对我遇到的这个问题有解决方案吗?

2 个答案:

答案 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