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
的错误?
答案 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)
分离。