数据框中的订单功能有什么问题?

时间:2016-02-19 07:07:50

标签: r

DF <- data.frame(CpGId, tframe$t, tframe$p, q)
dimnames(DF)[[2]] <- c("CpGId", "t_value", "p_value", "q_value")
DFhyper <- DF[with(DF, q_value < 0.05 & t_value> 0), ]
DFhyper <- data.frame(DFhyper, row.names = NULL)
DFhyper <- DFhyper [order(p_value), ]

直到第四行代码,一切正常,但为什么R给出p_value object not found的错误?

2 个答案:

答案 0 :(得分:2)

需要

DFhyper <- DFhyper [order(Dfhyper$p_value), ]

答案 1 :(得分:2)

R首先执行括号内的表达式,而不关注它将如何使用。当您键入

DFhyper[order(p_value),]

R将在当前范围(可能是全局范围)中查找p_value,但是,由于它绑定到数据框中,因此无法找到它。你需要做些什么来告诉它它的位置。

无论

DFhyper[order(DFhyper$p_value),]

DFhyper[with(DFhyper,order(p_value)),]

(或几乎相当于with(DFhyper,DFHyper[order(p_value),]))将起作用。第一个命令告诉R特别指出你正在引用数据框中的列,第二个命令告诉R在数据框中查找变量,如果它在范围内找不到它。

最后,您也可以将数据框绑定到范围中,执行

attach(DFhyper)
DFhyper[order(p_value),]

attach命令将dataframe列添加到当前范围。当您在dataframe列上有许多操作但不想继续引用它时,它会很有用。完成后,您可以使用detach(DFhyper) 分离