检查列表向量列中的成员资格

Chr*_*ean 5 r dplyr

假设我有一个以下格式的 data.frame:

Site     CowId    Result
FarmA    1000     c("Aerococcus viridans", "Staphylococcus chromogenes")
FarmA    1001     Staphylococcus aureus
FarmA    1002     Contaminated
Run Code Online (Sandbox Code Playgroud)

如何检查发色葡萄球菌是否是任何集合中的成员,而不取消结果列中任何潜在向量的嵌套?

df <- structure(list(Site = structure(c(1L, 1L, 1L), .Label = "FarmA", class = "factor"), CowId = 1000:1002, Result = list(c("Aerococcus viridans", "Staphylococcus chromogenes"), "Staphylococcus aureus", "Contaminated")), class = c("grouped_df", "tbl_df", "tbl", "data.frame"), row.names = c(NA, -3L), groups = structure(list( Site = structure(c(1L, 1L, 1L), .Label = "FarmA", class = "factor"), CowId = 1000:1002, .rows = structure(list(1L, 2L, 3L), ptype = integer(0), class = c("vctrs_list_of", "vctrs_vctr", "list"))), class = c("tbl_df", "tbl", "data.frame" ), row.names = c(NA, -3L), .drop = TRUE))
Run Code Online (Sandbox Code Playgroud)

Dav*_*e2e 6

您可以使用 lapply/sapply 测试 df$Result 的所有成员上的字符串。

testString <-"Staphylococcus chromogenes"
sapply(df$Result, function(results){testString %in% results})
#[1]  TRUE FALSE FALSE
Run Code Online (Sandbox Code Playgroud)