R 检查 TRUE/FALSE 值列表是否为 TRUE
R check if a list of TRUE/FALSE values evaluate to TRUE
我对 R 比较陌生,如果这是基础知识,我很抱歉。我有这个循环,里面有一个条件,可以比较 2 个列表和 return 一个 TRUE/FALSE 值的向量。我真正需要检查的是这个向量是否仅包含 TRUE 值(意味着 2 个列表相同)
for ( i in 1:(length(sessions_items_list)-1)){
if (sessions_items_list[[i]]==sessions_items_list[[i+1]]){
identical_sessions_df [i,1] <- names(sessions_items_list[i])
identical_sessions_df [i,2] <- names(sessions_items_list[i+1])
#identical_sessions_df [i,3] <- sessions_items_list[[i]]
#identical_sessions_df [i,4] <- sessions_items_list[[i+1]]
}
}
这是一些数据:
> sessions_items_list[[2]]
[1] "111502665618" "111505397996" "121238758674" "121480200508" "131159477858" "161469302097" "161474935929" "171526802604" "231197187139" "231381216285" "251502101205" "261650031415"
[13] "261652085962" "261652452940" "271538491767" "281398254987" "291227243345" "311065441334" "321561638226" "321566237993" "331042848072" "331251405185" "331366646532" "361096154736"
[25] "381043841996"
> sessions_items_list[[3]]
[1] "111502665618" "111505397996" "121238758674" "131159477858" "161469302097" "161474935929" "171526802604" "231197187139" "231381216285" "251502101205" "261647474153" "261650031415"
[13] "261652085962" "261652452940" "271538491767" "281398254987" "291227243345" "311065441334" "321561638226" "321566237993" "331042848072" "331251405185" "331366646532" "361096154736"
[25] "381043841996"
条件结果示例如下:
> sessions_items_list[[2]]==sessions_items_list[[3]]
[1] TRUE TRUE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
是否有一个简单的函数来检查这个谓词列表是否为真(所有值都为真)?
也许试试 all
函数:
> x <- c(rep(TRUE, 5), FALSE)
> y <- c(rep(TRUE, 6))
> all(x)
[1] FALSE
> all(y)
[1] TRUE
顾名思义,它会检查所有值是否为真。
也许不言而喻,但我经常想检查相反的情况,即向量是否仅包含 FALSE 值。对于这种情况,检查 any
值是否为真,如果 none 为(这给你假),则否定它:
> x <- c(FALSE, TRUE, FALSE)
> y <- c(TRUE, TRUE, TRUE)
> z <- c(FALSE, FALSE, FALSE)
> !any(x)
[1] FALSE
> !any(y)
[1] FALSE
> !any(z)
[1] TRUE
我对 R 比较陌生,如果这是基础知识,我很抱歉。我有这个循环,里面有一个条件,可以比较 2 个列表和 return 一个 TRUE/FALSE 值的向量。我真正需要检查的是这个向量是否仅包含 TRUE 值(意味着 2 个列表相同)
for ( i in 1:(length(sessions_items_list)-1)){
if (sessions_items_list[[i]]==sessions_items_list[[i+1]]){
identical_sessions_df [i,1] <- names(sessions_items_list[i])
identical_sessions_df [i,2] <- names(sessions_items_list[i+1])
#identical_sessions_df [i,3] <- sessions_items_list[[i]]
#identical_sessions_df [i,4] <- sessions_items_list[[i+1]]
}
}
这是一些数据:
> sessions_items_list[[2]]
[1] "111502665618" "111505397996" "121238758674" "121480200508" "131159477858" "161469302097" "161474935929" "171526802604" "231197187139" "231381216285" "251502101205" "261650031415"
[13] "261652085962" "261652452940" "271538491767" "281398254987" "291227243345" "311065441334" "321561638226" "321566237993" "331042848072" "331251405185" "331366646532" "361096154736"
[25] "381043841996"
> sessions_items_list[[3]]
[1] "111502665618" "111505397996" "121238758674" "131159477858" "161469302097" "161474935929" "171526802604" "231197187139" "231381216285" "251502101205" "261647474153" "261650031415"
[13] "261652085962" "261652452940" "271538491767" "281398254987" "291227243345" "311065441334" "321561638226" "321566237993" "331042848072" "331251405185" "331366646532" "361096154736"
[25] "381043841996"
条件结果示例如下:
> sessions_items_list[[2]]==sessions_items_list[[3]]
[1] TRUE TRUE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
是否有一个简单的函数来检查这个谓词列表是否为真(所有值都为真)?
也许试试 all
函数:
> x <- c(rep(TRUE, 5), FALSE)
> y <- c(rep(TRUE, 6))
> all(x)
[1] FALSE
> all(y)
[1] TRUE
顾名思义,它会检查所有值是否为真。
也许不言而喻,但我经常想检查相反的情况,即向量是否仅包含 FALSE 值。对于这种情况,检查 any
值是否为真,如果 none 为(这给你假),则否定它:
> x <- c(FALSE, TRUE, FALSE)
> y <- c(TRUE, TRUE, TRUE)
> z <- c(FALSE, FALSE, FALSE)
> !any(x)
[1] FALSE
> !any(y)
[1] FALSE
> !any(z)
[1] TRUE