当我从R中的一列列表中添加一个具有每个列表的nrow/length的新列时,我该如何处理



下面是一个示例,说明了所需的Out,它目前提供了所有T

Eg <- tibble("A"=  c("A","B", "C"),
"Number" = 1:3,
"Lists" = c(tibble(A=c(1,5)),tibble(A=1),tibble(B=2)))
Out <- Eg%>%
mutate(New= case_when(length(Lists)==2~F,
T~T))
#My desired Out would be
print(Out$New)
F T T

您可以使用lengths:

Eg$New <- lengths(Eg$Lists) != 2
Eg
# A tibble: 3 x 4
#  A     Number Lists        New  
#  <chr>  <int> <named list> <lgl>
#1 A          1 <dbl [2]>    FALSE
#2 B          2 <dbl [1]>    TRUE 
#3 C          3 <dbl [1]>    TRUE 

如果必须使用dplyr::case_when:

library(dplyr)
Eg %>%
rowwise() %>%
mutate(New= case_when(length(Lists)==2~FALSE,
TRUE~TRUE))

Eg %>%
mutate(New= case_when(lengths(Lists)==2~FALSE,
TRUE~TRUE))

最新更新