【发布时间】:2017-06-05 23:06:54
【问题描述】:
我正在处理一个数据框,并提取了从 0 到 23 小时数据的列。我正在添加一列作为基于小时的日期类型。我在下面执行了 for 循环,但出现错误。有人可以帮助我以下语法有什么问题以及如何更正。
for(i in data$Requesthours) {
if(data$Requesthours>=0 & data$Requesthours<3) {
data$Partoftheday <- "Midnight"
} else if(data$Requesthours>=3 & data$Requesthours<6) {
data$Partoftheday <- "Early Morning"
} else if(data$Requesthours>=6 & data$Requesthours<12) {
data$Partoftheday <- "Morning"
} else if(data$Requesthours>=12 & data$Requesthours<16) {
data$Partoftheday <- "Afternoon"
} else if(data$Requesthours>=16 & data$Requesthours<20) {
data$Partoftheday <- "Evening"
} else if(data$Requesthours>=20 & data$Requesthours<=23) {
data$Partoftheday <- "Night"
}
}
【问题讨论】:
-
a) “不断出错”告诉我们什么;请发布错误的文本。包括它引用的代码行,以便我们可以看到它是由 for 语句还是 if 语句引起的? b) 另外我们没有您的数据,请添加一个最小可重现示例 How to make a great R reproducible example?。 c) 还请格式化和缩进您的代码,使其清晰易读;这次是我为你做的。
-
另外,请参阅我对编码技巧的回答,该技巧会将其简化为单行(并绕过您的错误)
-
还在等你发布你的错误。我怀疑您的 data$Requesthours 列中有 NA。但实际上不是......
-
您的错误是
for(i in data$Requesthours)正在尝试迭代您的数据框,但会将行索引与数据值混淆。
标签: r for-loop if-statement vectorization cut