我尝试使用mutate来创建一个新列,该列基于包含TRUE/FALSE向量的列中存在的任何TRUE。
给定示例代码,我希望看到“允许”列包含(FALSE,TRUE,TRUE,TRUE,TRUE,FALSE)。我得到的都是TRUE。
library(dplyr)
GroupName <- c("Mayfair", "Chronos", "Orion", "Milkhouse", "Saddle", "Westeros")
Region <- c("A12", "S19", "T12", "T11", "S16", "B2")
GroupAssociation <- data.frame(GroupName, Region)
regID <- c("S", "T1")
groupMap <- GroupAssociation
groupMap$allowed <- lapply(groupMap$Region, stringr::str_starts, regID)
groupMap <- mutate(groupMap, Allow = any(unlist(groupMap$allowed) == TRUE))
2条答案
按热度按时间bvhaajcl1#
我们可以使用
sapply
循环list
,并对整个列表应用any
而不是unlist
对于
tidyverse
,它可以是map_lgl
或者在较新版本的
purrr
中,在pingmap
后使用list_c
dgsult0t2#
要遵循语法,您需要在
mutate
之前使用rowwise()
。在mutate
命令中,您不需要使用$
语法来引用列,只需列名即可。此外,any(... == TRUE)
是多余的,因为any
本身已经测试了任何TRUE值。