R中的嵌套循环 - 错误

时间:2018-04-12 17:24:38

标签: r for-loop if-statement nested

我使用了一个表(23行),我在其中提取了2列(称为x和y)并命名为z = x-y和w = x-y。我还有一个名为“type”的列,它有2个变量,“buy”或“sell”。

我有一个“ifelse”声明,声明:If(type ==“buy”,z,w)

所以,如果i = 1,输入= buy,我希望R返回z [[1]],即i = 1的第一个答案(i = 1时不是23个答案)。但是,当我记下循环时,它会为每个“i”返回23个结果。 (即,对于i = 1,对于i = 1,它返回23个结果)。我尝试过使用[[i]]括号,但仍然没有结果。

for(i in 1:23)
{
  z[i]=y[i]-x[i]
  w[i]=x[i]-y[i]
  ifelse(type[i]=="buy", z[i], w[i])
}

没有for循环的代码:

z=y-x #buy
w=x-y #sell
ifelse(type=="buy",z, w)

有什么建议吗? 谢谢

1 个答案:

答案 0 :(得分:0)

问题是ifelse是矢量化的。你需要使用

if(type[i] == buy) z[i] else w[i]

而不是for循环中的ifelse。也就是说,第二个版本在R中会更快更清晰。我强烈建议你使用矢量化方法。