像Stata一样在R中循环

时间:2014-08-02 05:39:30

标签: r loops for-loop stata

我确信这很简单,但我找不到将Stata中的这个简单循环转换为R的方法。

在循环中是以下

forvalues i=1/8{
  gen foo`i'=foo`i'.bar.1+foo`i'.bar.2
}

其中foo's是数字向量变量。因此,循环使用gen创建八个新变量,每个变量是两组不同变量的总和。我不确定如何将该循环转换为R

1 个答案:

答案 0 :(得分:6)

我不是stata人,但看起来你正在创建一组变量,通过添加另外两组以相同方式命名的变量(在别处创建)来区分名称中的数字。这通常不是我们在R中做事的方式,因为创建变量列表然后通过索引引用每个变量太容易了。有很多选择,但一种R方法就像

foo <- list()
for (i in 1:8){
   foo[[i]] <- foo.bar.1[[i]] + foo.bar.2[[i]]
}

R实际上有无数类型的数据容器,因此可能有许多其他更适合您的应用程序。

但无论如何,如果您真的想在变量名中包含数字,可以使用assign()get()函数。像

这样的东西
for (i in 1:8){
   assign(paste("foo",i,sep=''),get(paste("foo",i,".bar.1",sep=''))+get(paste("foo",i,".bar.2",sep='')))
}