我有一个有几千行和数百列的表。我需要识别(部分)匹配几个关键字的单元格(),而不是过滤表。到目前为止,我所能找到的只有函数WhichCells {SeuratObject} -唉,我无法让它工作。
例如
Column1 <- c("Temperature", "Water", "Sun", "tree fighter", "rainbow")
Column2 <- c(60.1, 106, 78.6, 21.5, 71)
Column3 <- c("Another cell", NA, "more content", NA, "Thanks!")
df <- data.frame(Column1, Column2, Column3)
df
pattern <- c("temp", "content", 55, "heart", "thanks")希望得到的结果如下所示
pattern Column Row
1 temp Column1 1
2 content Column3 3
3 thanks Column3 5注意:行也可以作为行名返回。
拜托,有人能给我建议怎么解决这个问题吗?非常感谢!
发布于 2021-09-02 08:58:30
在这里,这是答案的一部分,但您应该做一些调整,以考虑上/下情况:
pattern <- c("Temp", "content", 55, "heart", "Thanks")
detectpattern <- function(df, pattern){
colindex <- which(apply(df, 1, str_detect, pattern = pattern))
rowindex <- which(apply(df, 2, str_detect, pattern = pattern))
return(c(pattern, colindex, rowindex))
}
for (pat in pattern){
print(detectpattern(df = df, pattern = pat))
}发布于 2021-09-03 01:23:00
你可以试试
df %>%
tibble::rownames_to_column(., var = "Row") %>%
melt(id.vars = "Row", value.name = "patterns", variable.name = "Column") %>%
mutate(check = ((sapply(pattern, function(x) {str_detect(patterns, regex(x, ignore_case = T)) %>% as.numeric} ))%>% rowSums(., na.rm=TRUE))) %>%
filter(check == 1) %>% select(-check)
Row Column patterns
1 1 Column1 Temperature
2 3 Column3 more content
3 5 Column3 Thanks!https://stackoverflow.com/questions/69026957
复制相似问题