我确信这很简单,但我找不到将Stata中的这个简单循环转换为R的方法。
在循环中是以下
forvalues i=1/8{
gen foo`i'=foo`i'.bar.1+foo`i'.bar.2
}
其中foo's
是数字向量变量。因此,循环使用gen
创建八个新变量,每个变量是两组不同变量的总和。我不确定如何将该循环转换为R
答案 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='')))
}