我使用了一个表(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)
有什么建议吗? 谢谢
答案 0 :(得分:0)
问题是ifelse
是矢量化的。你需要使用
if(type[i] == buy) z[i] else w[i]
而不是for循环中的ifelse。也就是说,第二个版本在R中会更快更清晰。我强烈建议你使用矢量化方法。