2015-11-02 37 views
-1

我有数以百计的P值对应于我的数据框中的行名称。我把这些值转换成原始表的新行:在R中查找我的P值的行名称

df1$Pvalues<-lapply(1:nrow(data1), function(i) { 
    wilcox.test(as.numeric(data1[i, ]), as.numeric(data2[i, ]))$p.value 
})) 

我发现排名前20的显著P值,现在需要找出它们所对应的列名。我曾尝试:

which(rownames(df1) %in% c("1.136925e-12")) 

但给出的答案是integer(0)

另一种方式是与列名一起印制的前20名最显著P值直线距离,但我只有实际的P值。在此命令wilcoxon是在那里我有子集P值数据框的名称:

head(sort(wilcoxon),20) 

我是初学者,任何帮助,将不胜感激!

+3

你可以让你的例子[reproducible](http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example)?一般来说,您可能更容易将输入与输出分开。 – Heroka

+0

如果你想找到他们属于哪一列,为什么你要与'row.names'比较? – akrun

+0

@akrun我很抱歉,我的意思是排名! – magsd

回答

0

所以,首先你需要找到最小的20个值。例如。对值的向量进行排序,然后索引前20个元素。当你知道你正在查找哪些值时,可以使用逻辑向量对row.names进行索引。

x <- sort(df1$Pvalues)[1:20] 

row.names(df1)[df1$Pvalues %in% x] 
+1

试图解释为什么这会起作用,而不仅仅是给出一个单线。 – BobbyTables