r - 如何同时对值和名称进行子集化
问题描述
有没有一种方便的方法可以将这两个步骤合二为一?
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"
在此先感谢您的任何建议。
解决方案
这是假设您的数据框只有一行的一种方法 -
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"
推荐阅读
- java - 如何处理 MethodArgumentNotValidException
- python - 如何在 Python 中去掉前导零
- html - ng For 循环仅返回数组中的最后一个值
- ruby - 如何从另一个类方法调用一个类方法
- c# - 在自己的 ServiceCollection 中获取 IConfiguration
- sql - 我错过了任何类型的 JOIN 吗?
- gremlin - gremlin-python - 通过分块拉出所有顶点
- python - 如何在 python 中调整 CIE L*a*b* 图像中的颜色曲线?
- sql - sql Oracle:仅当值存在时才从另一个表中插入值
- javascript - 如何根据第一个值对数组进行排序?