我有以下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"。
请帮我找出错误的地方?
答案 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