首页 > 解决方案 > 如何同时对值和名称进行子集化

问题描述

有没有一种方便的方法可以将这两个步骤合二为一?

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"

在此先感谢您的任何建议。

标签: r

解决方案


这是假设您的数据框只有一行的一种方法 -

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"

推荐阅读