子集行基于未知名称和列数的列的值

时间:2011-09-29 23:10:13

标签: r

我确信我有一个非常基本的问题但是我在寻找关于如何完成某些数据框/矩阵的子集化(获取行号)的想法后感到沮丧,这些数据框/矩阵可以有任意数量的列和列名称改变所有时间。我想只找到任何列大于0的数据框的行(索引)。由于列名和列数未知,我不知道如何做...

一个例子:

# these are the terms I am looking in
terms <- c("beats", "revs", "revenue", "earnings")
# dict <- Dictionary(terms)
# dictStudy <- inspect(DocumentTermMatrix(mydata.corpus.tmp, list(dictionary = dict)))

dictStudy <- data.frame(beats=c(0, 0, 0, 1, 0, 2), revs=c(0, 0, 0, 1, 0, 1), revenue=c(0, 0, 0, 0, 0, 0), earnings=c(1, 0, 0, 1, 0, 1)) 
ss <- expression(terms > 0)
dictStudy.matching <- subset(dictStudy, eval(ss))

我希望表达式和评估能够拯救我,但我无法理解这一点。

如何仅查找具有任何列&gt;的数据框中的行0?

1 个答案:

答案 0 :(得分:1)

我假设你的意思是你想要那行中至少有一个元素大于零的行(即任何一列都大于零)。

> which(apply(dictStudy,1,function(x) any(x > 0)))
[1] 1 4 6

正如Tommy在下面指出的那样,这假定您的所有列实际上都是数字的。您可以通过将数据框设置为仅提取数字列

来回避这一点
> which(apply(dictStudy[,sapply(dictStudy,is.numeric)],1,function(x) any(x > 0)))
[1] 1 4 6