假设我创建了以下data.frame:
f <- c("a",2,3,8,7)
g <- c("b",4,1,8,14)
h <- c("abc",7,3,1,4)
i <- c("a",2,3,8,4)
df <- data.frame(f,g,h,i)
如何通过要求R删除第一行中不具有“a”的列来删除列g
和h
(在示例中,仅保留f
和i
?
答案 0 :(得分:0)
我们可以使用grep
根据第一行值选择列。我们在对第一行进行子集化后unlist
列,使用模式为"a"
,后跟字符串的开头(^
),后跟字符串的结尾(^$
),即字符串中只有一个字符,它是"a"
。使用逻辑索引对列进行子集化。
df[grepl('^a$', unlist(df[1,]))]
注意:灵感来自@Ananda Mahto的评论。
答案 1 :(得分:0)
如果您要检查“a”,那么您可以使用==
df[,df[1,] == "a"]