我正在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_input
,S2_input
,S1_S2_input
是逻辑变量(TRUE / FALSE)(只能是TRUE
,其余FALSE
)和{ {1}}只是一个字符串变量
我正在尝试使用Jupiter Notebook共享我的代码,并且同一行给出了错误,但仅当bands
为S1_input
S2_input和nchar(bands)中的错误> 40:只能对数字,逻辑或复杂类型进行操作
跟踪:
- 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))))- ifelse(S2_input和nchar(bands)> 40,2,ifelse(S1_S2_input&
。 nchar(带)> 40,3,ifelse(S2_input && nchar(带)<40,
。 4,5)))
答案 0 :(得分:0)
对于那些对未来感兴趣的人,我的问题是我正在使用readline()
函数来获取用户输入。 (在RStudio中运行时,它们是布尔变量T / F)。用户写的是TRUE,但根据我的情况,这并不视为布尔值。解决方案是显式编写ifelse(S2_input=="TRUE"
...
另一种选择,使用as.logical(readlines(""))
以确保用户输入被视为布尔值,数字(as.numeric
)等。
希望有帮助!