2011-09-29 41 views
0

我确定我有一个非常基本的问题,但是我在搜索关于如何完成某些数据框/子集的子集(获取行数)矩阵可以有任意数量的列和列名称随时更改。我只想找到任何列大于0的数据帧的行(索引)。由于列名和列数是未知的,我不知道该怎么做...基于未知名称列数值的子集行

An例如:

# 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)) 

我希望表达和eval会救我,但我无法弄清楚这一点。

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

回答

1

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

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

托米低于所指出的,这是假定所有的列是事实上的数字。

> which(apply(dictStudy[,sapply(dictStudy,is.numeric)],1,function(x) any(x > 0))) 
[1] 1 4 6 
+0

请注意,你必须确保所有列是数字的第一... – Tommy

+0

谢谢你,你可以通过subseting您的数据帧拉出只有那些数字列回避这个问题。它很好地工作。 – Samo