Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在R中像在Stata中一样循环_R_Loops_For Loop_Stata - Fatal编程技术网

在R中像在Stata中一样循环

在R中像在Stata中一样循环,r,loops,for-loop,stata,R,Loops,For Loop,Stata,我确信这是非常简单的,但我找不到一种方法将Stata中的这个简单循环转换为R 循环中有以下内容 forvalues i=1/8{ gen foo`i'=foo`i'.bar.1+foo`i'.bar.2 } 其中,foo的是数值向量变量。因此,循环使用gen创建八个新变量,每个变量都是两组不同变量的总和。我不知道如何将该循环转换为R我不是一个stata人员,但看起来您正在创建一组变量,通过添加其他两组以相同方式命名的变量(在其他地方创建),以数字区分它们的名称。这通常不是我们在R中做事情的

我确信这是非常简单的,但我找不到一种方法将Stata中的这个简单循环转换为R

循环中有以下内容

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

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

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

foo <- list()
for (i in 1:8){
   foo[[i]] <- foo.bar.1[[i]] + foo.bar.2[[i]]
}
for (i in 1:8){
   assign(paste("foo",i,sep=''),get(paste("foo",i,".bar.1",sep=''))+get(paste("foo",i,".bar.2",sep='')))
}

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

foo <- list()
for (i in 1:8){
   foo[[i]] <- foo.bar.1[[i]] + foo.bar.2[[i]]
}
for (i in 1:8){
   assign(paste("foo",i,sep=''),get(paste("foo",i,".bar.1",sep=''))+get(paste("foo",i,".bar.2",sep='')))
}

那些Stata名称无效。不允许使用
循环。循环的作用是什么?这些状态名称无效。不允许使用
s。循环的作用是什么?我认为您应该推荐一种解决方案,包括第一个示例的左侧和第二个示例的右侧,因为OP似乎希望在循环的每次迭代中动态生成右侧变量名。??OP中右侧变量名的生成涉及更改r.h.s中的
i
,这在我的两个示例中都会发生。你能澄清你的想法吗?当OP写
foo`i.bar.1
时,这在R中相当于
get(粘贴(“foo”,i,.bar.1”,sep='')
(在你的第二个例子中)。我只是建议把你的答案结合起来,这样就可以把Stata语法精确地翻译成R语法。第二个例子将Stata的工作完全翻译成两边。第一个例子是一种更好的方法,它不涉及任何一方古怪的变量名。我想,我们将由OP来决定。是的,我想这是一个结果变量应该在哪里结束的问题,因为在Stata中,这只是一个可能的位置(回到原始数据集中),而在R中,它可能在任何地方结束。无论如何,你已经从我这里得到了+1。我认为你应该推荐一个解决方案,包括第一个示例中的左侧和第二个示例中的右侧,因为OP似乎希望在循环的每次迭代中动态生成右侧变量名。??OP中右侧变量名的生成涉及更改r.h.s中的
i
,这在我的两个示例中都会发生。你能澄清你的想法吗?当OP写
foo`i.bar.1
时,这在R中相当于
get(粘贴(“foo”,i,.bar.1”,sep='')
(在你的第二个例子中)。我只是建议把你的答案结合起来,这样就可以把Stata语法精确地翻译成R语法。第二个例子将Stata的工作完全翻译成两边。第一个例子是一种更好的方法,它不涉及任何一方古怪的变量名。我想,我们将由OP来决定。是的,我想这是一个结果变量应该在哪里结束的问题,因为在Stata中,这只是一个可能的位置(回到原始数据集中),而在R中,它可能在任何地方结束。你已经从我这里得到了+1。