有没有一种方便的方法将这两个步骤合并为一个步骤?
df = data.frame(aa = 'A', ab = '', n = 'C')
# aa ab n
# A C
temp = df[ grep('a', names(df)) ]
# aa ab
# A
ans = temp[ temp != '' ]
# [1] "A"提前感谢您的任何建议。
发布于 2019-07-11 07:39:56
这里有一种假设你的数据帧只有一行的方法-
df[grepl("a", names(df)) & df != '']
[1] "A"感谢@thelatemail,这是一个适用于任意数量行的通用解决方案-
df <- data.frame(aa = c('A','B'), ab = c('','T'), n = c('C', 'C'))
df[grepl("a", names(df)[col(df)]) & df != '']
[1] "A" "B" "T"发布于 2019-07-11 07:22:14
tidyverse方式
library(tidyr)
library(dplyr)
df = data.frame(aa = 'A', ab = '', n = 'C')
df.long <-gather(df, col) #chaging to long format and key is col
df.long %>%
filter(col %in% grep("a",col, value = T) & value != '')https://stackoverflow.com/questions/56979685
复制相似问题