if逻辑向量的函数和长度

时间:2011-11-29 13:35:47

标签: r if-statement

我有一个数据框,其中日期以水文年份(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”帮助文件我意识到条件必须是长度为一的逻辑向量。有没有办法使用“或”与“如果”?如果月份是十月,十一月或十二月,我想要的就是应用该表达式。

3 个答案:

答案 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()