如何基于分组data.frame中另一列中的任意()填充列?

如何基于分组data.frame中另一列中的任意()填充列?,r,dplyr,mutate,any,R,Dplyr,Mutate,Any,我有一个dataframe jj: jj<-data.frame(a=rep(1:3,3),b=c(TRUE,rep(FALSE,4),TRUE,TRUE,FALSE,TRUE)) 但我得到的结果是: # A tibble: 9 x 3 # Groups: a [3] a b c <int> <lgl> <lgl> 1 1 TRUE FALSE 2 2 FALSE FALSE 3 3 FAL

我有一个dataframe jj:

jj<-data.frame(a=rep(1:3,3),b=c(TRUE,rep(FALSE,4),TRUE,TRUE,FALSE,TRUE))
但我得到的结果是:

# A tibble: 9 x 3
# Groups:   a [3]
      a b     c    
  <int> <lgl> <lgl>
1     1 TRUE  FALSE
2     2 FALSE FALSE
3     3 FALSE FALSE
4     1 FALSE FALSE
5     2 FALSE FALSE
6     3 TRUE  FALSE
7     1 TRUE  FALSE
8     2 FALSE FALSE
9     3 TRUE  FALSE
#一个tible:9 x 3
#分组:a[3]
a、b、c
1对错
2假2假
3假3假
4 1假假
5.2假假
6 3真假
7.1真假
8.2假假
9 3真假
我的预期结果应该是:

# A tibble: 9 x 3
# Groups:   a [3]
      a b     c    
  <int> <lgl> <lgl>
1     1 TRUE  TRUE
2     2 FALSE FALSE
3     3 FALSE TRUE
4     1 FALSE TRUE
5     2 FALSE FALSE
6     3 TRUE  TRUE
7     1 TRUE  TRUE
8     2 FALSE FALSE
9     3 TRUE  TRUE
#一个tible:9 x 3
#分组:a[3]
a、b、c
1正确的
2假2假
3假真实
4.1假-真
5.2假假
6.3正确的
7.1正确
8.2假假
9.3正确

我甚至不明白为什么我得到的都是假的——如果它都是真的,那就有意义了,而且我认为
any()
出于某种原因得到了完整的列。我遗漏了什么,如何才能达到预期的结果?

我们需要在逻辑列上应用
any
,而不是
isTRUE

jj %>% 
  group_by(a) %>%
  mutate(c = any(b))
# A tibble: 9 x 3
# Groups:   a [3]
#      a b     c    
#  <int> <lgl> <lgl>
#1     1 TRUE  TRUE 
#2     2 FALSE FALSE
#3     3 FALSE TRUE 
#4     1 FALSE TRUE 
#5     2 FALSE FALSE
#6     3 TRUE  TRUE 
#7     1 TRUE  TRUE 
#8     2 FALSE FALSE
#9     3 TRUE  TRUE 
is.logical(x) && length(x) == 1 && !is.na(x) && x 
只有当表达式
lhs
均为真时,才会计算
&
rhs
表达式


这里,
length(x)
等于1是不正确的,因此它返回
FALSE

我们需要在逻辑列上应用
any
,而不是
isTRUE

jj %>% 
  group_by(a) %>%
  mutate(c = any(b))
# A tibble: 9 x 3
# Groups:   a [3]
#      a b     c    
#  <int> <lgl> <lgl>
#1     1 TRUE  TRUE 
#2     2 FALSE FALSE
#3     3 FALSE TRUE 
#4     1 FALSE TRUE 
#5     2 FALSE FALSE
#6     3 TRUE  TRUE 
#7     1 TRUE  TRUE 
#8     2 FALSE FALSE
#9     3 TRUE  TRUE 
is.logical(x) && length(x) == 1 && !is.na(x) && x 
只有当表达式
lhs
均为真时,才会计算
&
rhs
表达式

这里,
length(x)
等于1是不正确的,因此它返回
FALSE