像Stata一样在R中循环

Nau*_*aus 1 loops for-loop r stata

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

在循环中如下

forvalues i=1/8{
  gen foo`i'=foo`i'.bar.1+foo`i'.bar.2
}
Run Code Online (Sandbox Code Playgroud)

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

far*_*nsy 6

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

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

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='')))
}
Run Code Online (Sandbox Code Playgroud)