如果声明表明市场是上涨还是下跌

时间:2015-12-26 19:42:30

标签: r function loops if-statement

我有一个来自库(ISLR)的数据集,我想自己上下,但我的if语句总是失败,任何帮助都将不胜感激:

library(ISLR)
attach(Smarket)

for (i in 1:nrow(Smarket)){
    Smarket$myown = ()
    if (Smarket[i, "Today"]>0) { Smarket$myown = "Up"
    } else { Smarket$myown = "Down"
  }
}

请注意,如果我使用语句ifelse,则问题已解决,但我希望您的帮助可以修改上述代码,以便我可以学习

 Smarket$myown = ifelse(Smarket[, "Today"]> 0, "Up", "Down")  

1 个答案:

答案 0 :(得分:2)

你很接近,但是你错过了实际创建你想要的列的索引。 ifelse正常工作,因为它正在为您编制索引。试试这个:

for (i in 1:nrow(Smarket)){
  if(Smarket[i, "Today"] > 0){ 
    Smarket$myown[i] = "Up"
  }else{ 
    Smarket$myown[i] = "Down"
  }
}

请注意,我不需要像您那样初始化“myown”列。如果您要创建一个全新的矢量,则需要,但由于您要添加到现有的data.frame,因此没有必要。另请注意,每次为“myown”分配新值时,都会有[i]。阅读它:

“对于nrow(Smarket)中的每个项目,如果第i个”今天“值大于零,则将”向上“存储在”myown“的第i个值中。否则,存储”向下“ “在”myown“的第i项中。