我有一个来自库(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")
答案 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项中。