【发布时间】:2021-11-21 19:39:38
【问题描述】:
我提出的类似问题似乎并不完全适用于我想要完成的工作,并且在最相似的问题之一中提供的答案中至少有一个没有正确提供实际有效的解决方案。
所以我有一个数据框,可以说类似于以下内容。
sn <- 1:6
pn <- letters[1:6]
issue1_note <- c(“issue”,”# - #”,NA,”sue”,”# - #”,”ISSUE”)
issue2_note <- c(“# - #”,”ISS”,”# - #”,NA,”Issue”,”Tissue”)
df <- data.frame(sn,pn,issue1_note,issue2_note)
这就是我想要做的。我希望能够快速轻松地直观地检查每个 _note 列。我知道我可以使用select() 和filter() 在每一列上执行此操作,如
df %>% select(issue1_note) %>%
filter(!is.na(issue1_note) & issue1_note != “# - #”)
但是,我的真实数据中有大约 30 列和 300 行,我不想每次都这样做。
我想编写一个 for 循环,它将在所有列中执行此操作。我还希望单独打印每一列。我尝试以下方法仅删除 NA,但它仅选择并打印列。就好像它完全跳过了过滤一样。
col_notes <- df %>% select(ends_with(“note”)) %>% colnames()
for(col in col_notes){
df %>% select(col) %>% filter(!is.na(col)) %>% print()
}
关于如何让这个也过滤的任何想法?
【问题讨论】: