该错误告诉您该子句 to if
应该只有一个值。
即,要么TRUE
或FALSE
,但不是例如c(TRUE, TRUE, FALSE)
。
所以如果试图完成类似的事情
if (c(TRUE, FALSE, TRUE))
< DO SOMETHING WHEN TRUE >
< DO SOMETHING DIFFERENT WHEN FALSE >
一个基本的if
陈述是行不通的。
该语句将只查看第一个值(如警告所示)。
对于这种情况,要使用的语句是ifelse
(正如@Joran 在他的回答中指出的那样)
ifelse ( c(TRUE, FALSE, TRUE),
< DO SOMETHING WHEN TRUE > ,
< DO SOMETHING DIFFERENT WHEN FALSE > )
或者
set$DoYnew <- ifelse(set$Year == 2002,DoY + 365,DoY)
此外,如果您的数据在 data.frame 中,您可以根据需要进行子集化:
myDF$day[myDF$Year==2002] <- 365 + myDF$day[myDF$Year==2002]
# or if using data.table:
myDT[year==2002, day := day + 365]