假设我有一个以下格式的 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)
您可以使用 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)