在jupyter中运行R时,if语句出错

时间:2019-06-20 08:09:30

标签: r if-statement jupyter-notebook conditional-statements

我正在R中运行以下if条件,没有任何问题:

nrow<-ifelse(S1_input, 1, ifelse(S2_input & nchar(bands)>40, 2, ifelse(S1_S2_input & nchar(bands)>40, 3, ifelse (S2_input & nchar(bands)<40, 4, 5))))

其中S1_inputS2_inputS1_S2_input是逻辑变量(TRUE / FALSE)(只能是TRUE,其余FALSE)和{ {1}}只是一个字符串变量

我正在尝试使用Jupiter Notebook共享我的代码,并且同一行给出了错误,但仅当bandsS1_input

  

S2_input和nchar(bands)中的错误> 40:只能对数字,逻辑或复杂类型进行操作

     

跟踪:

     
      
  1. ifelse(S1_input,1,ifelse(S2_input&nchar(bands)> 40,2,
      ifelse(S1_S2_input&
       。 nchar(带)> 40,3,ifelse(S2_input && nchar(带)<40,
       。 4,5))))
  2.   
  3. ifelse(S2_input和nchar(bands)> 40,2,ifelse(S1_S2_input&
       。 nchar(带)> 40,3,ifelse(S2_input && nchar(带)<40,
       。 4,5)))
  4.   

1 个答案:

答案 0 :(得分:0)

对于那些对未来感兴趣的人,我的问题是我正在使用readline()函数来获取用户输入。 (在RStudio中运行时,它们是布尔变量T / F)。用户写的是TRUE,但根据我的情况,这并不视为布尔值。解决方案是显式编写ifelse(S2_input=="TRUE" ...

另一种选择,使用as.logical(readlines(""))以确保用户输入被视为布尔值,数字(as.numeric)等。

希望有帮助!