R Ifelse语句语法多个条件被破坏
我在使用嵌套的ifelse语句时遇到一些问题。我编写了以下代码。它应该强制一个正确或错误,但我得到一些NAs。你能帮我找出它坏在哪里吗 数据看起来像R Ifelse语句语法多个条件被破坏,r,if-statement,R,If Statement,我在使用嵌套的ifelse语句时遇到一些问题。我编写了以下代码。它应该强制一个正确或错误,但我得到一些NAs。你能帮我找出它坏在哪里吗 数据看起来像 Name<- c(Jon,Jim,Jake,Jess,Jill,Jay,Jason) LinkFlag<- c( NA, NA, NA, NA, NA, NA, NA) 1<- c(1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0) 2<- c(2.5, NA, NA, NA, NA, 3.
Name<- c(Jon,Jim,Jake,Jess,Jill,Jay,Jason)
LinkFlag<- c( NA, NA, NA, NA, NA, NA, NA)
1<- c(1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0)
2<- c(2.5, NA, NA, NA, NA, 3.0, NA)
spread_wide<-c(Name,LinkFlag,1,2)
Name您基本上有一组二进制检查,每个检查返回TRUE
,或者FALSE
,如果它们都不为TRUE。因此,只需将所有检查一起制作一个矩阵
或列表
,就很简单了:
checks <- with(spread_wide,
cbind(
`1` == 99,
`1` == `2` - 1,
is.na(`2`),
`2` == 99,
`1` == (`2` - 0.5),
`1` == `2`,
LinkFlag == 'FlagforSkip'
)
)
rowSums(checks, na.rm=TRUE) > 0
#[1] FALSE TRUE TRUE TRUE TRUE FALSE TRUE
为什么不使用Switch语句呢?如果你想使用if-else,在它们之间留出一些空间,就像if-else,使用正确的“if{}else if{}”语法,因为“ifelse ifelse”不是正确的语法。许多嵌套的ifelse
语句通常会导致难以跟踪的错误。最好用您试图实现的目标的描述来更新您的问题,因为无疑会有更好的方法来做到这一点。@Aaqibifelse
在R中是一个方便的函数,因此语法不是问题,但是的,这么多嵌套的ifelse
可能不是一个好主意。@用户下次将密切关注ifelse。这是什么1
checks <- with(spread_wide,
cbind(
`1` == 99,
`1` == `2` - 1,
is.na(`2`),
`2` == 99,
`1` == (`2` - 0.5),
`1` == `2`,
LinkFlag == 'FlagforSkip'
)
)
rowSums(checks, na.rm=TRUE) > 0
#[1] FALSE TRUE TRUE TRUE TRUE FALSE TRUE
Name<- c("Jon","Jim","Jake","Jess","Jill","Jay","Jason")
LinkFlag<- c( NA, NA, NA, NA, NA, NA, NA)
`1` <- c(1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0)
`2` <- c(2.5, NA, NA, NA, NA, 3.0, NA)
spread_wide<- data.frame(Name,LinkFlag,`1`,`2`,check.names=FALSE)