在R中循环和附加

时间:2017-01-06 12:18:12

标签: r loops append

我有以下R脚本

    optioncost =c(5,52,23,15,134,996,2033,18)
    options=c(0,1,1,1,1,0,1,1)
    cip=c()
    for (options_ind in options)
    {
      if(options_ind==1)
      {
        cip=append(cip,optioncost[which(options==options_ind)])
      }
    }
    cip

我想得到(52 23 15 134 2033 18)。当我运行上面的脚本时,我得到的输出列表是预期结果长度的6倍。我的代码输出如下:cip" 52 23 15 134 2033 18 52 23 15 134 2033 18 52 23 15 134 2033 18 52 23 15 134 2033 18 52 23 15 134 2033 18 52 23 15 134 2033 18"。

请帮我找出错误的地方?

2 个答案:

答案 0 :(得分:2)

optioncost[which(options==options_ind)]会自行选择您想要的信息。

for循环是多余的,在这种情况下,只重复选项中的“1”的过程,这就是6.这就是为什么输出数据比你想要的数据大6倍的原因

答案 1 :(得分:1)

optioncost[as.logical(options)]

如果您想使用for循环,那么就这样了

cip=c()
for (i in seq_along(options))
{
  if(options[i]==1)
  {
    cip=append(cip,optioncost[i])
  }
}
cip