我正在尝试使用R来理解该问题的答案,并且我正竭尽全力。
使用此代码可以找到R代码的数据集
library(devtools)
install_github("genomicsclass/GSE5859Subset")
library(GSE5859Subset)
data(GSE5859Subset) ##this loads the three tables you need
这是问题
编写一个函数,该函数采用值e的向量和对两组进行编码的二进制向量组,然后从t检验返回p值:t.test(e [group == 1],e [group = = 0])$ p.value。
现在将g定义为代码盒(1)和控件(0),例如g <-factor(sampleInfo $ group)
接下来使用函数apply对geneExpression的每一行运行t检验并获得p值。在所有这些t检验中,最小的p值是多少?
提供的答案是
myttest <- function(e,group){
x <- e[group==1]
y <- e[group==0]
return( t.test(x,y)$p.value )
}
g <- factor(sampleInfo$group)
pvals <- apply(geneExpression,1,myttest, group=g)
min( pvals )
哪个给您1.406803e-21的答案。
运行myttest函数的“ e”参数的确切输入是什么?是否可以将此函数编写为
之类的公式t.test(DV ~ sampleInfo$group)
t检验正在比较这24个人的基因表达值(我相信其值在“ geneExpression”矩阵中)按他们所在的组进行比较 您可以在sampleInfo的“组”列中找到。我已经在R中运行了很多次t测试,但是由于某些原因,我无法全神贯注于这段代码中发生的事情。
答案 0 :(得分:-1)
您的问题似乎与了解功能apply()
有关。
有关技术说明,请参见?apply
。
我的简要解释:您问题中的apply()
行代码将以下函数应用于geneExpression
的每一行
myttest(e=x, group=g)
其中x
是每行的占位符。
为帮助理解这一点,该for
行的apply()
循环版本应类似于:
N <- nrows(geneExpression) #so we don't have to type this twice
pvals <- numeric(N) #empty vector to store results
# what 'apply' does (but it does it very quickly and with less typing from us)
for(i in 1:N) {
pvals[i] <- myttest(geneExpression[i,], group=g[i])
}