我有一个数据框,其中日期以水文年份(10月至9月)给出。要改变这种情况,我试图使用if语句:
if(cet$month== 10|cet$month==11|cet$month==12)
cet$year <- substr(as.character(cet[,2]),1,4) else
cet$year <- substr(as.character(cet[,2]),6,9)
但是我收到一个错误:
the condition has length > 1 and only the first element will be used
读取“if”帮助文件我意识到条件必须是长度为一的逻辑向量。有没有办法使用“或”与“如果”?如果月份是十月,十一月或十二月,我想要的就是应用该表达式。
答案 0 :(得分:4)
ifelse
是矢量化版本。您还可以使用%in%
来减少语句数量。
cet$year <- ifelse(cet$month%in%(10:12), substr(as.character(cet[,2]),1,4), substr(as.character(cet[,2]),6,9))
答案 1 :(得分:0)
好的,这是一个可以重现的例子,应该有助于澄清事情:
# generate some vector
x <- c(1,2,4,4,5,5,6,6,6)
# have a check using OR, return values
x[x == 2 | x == 1]
## or return TRUE / FALSE
(x == 2 | x == 1)
或检查?ifelse
编辑:请注意,对于字符,您需要使用“”,例如x == "yourchars" | x == "someotherchars"
这里还有一些简单的参考以及如何使用运算符:QuickR
答案 2 :(得分:-1)
OR指令是双管
|
=&gt; ||
if()