2011-09-29 40 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