我正在努力完成任务,我希望你的意见。 注意:这是一个家庭作业,但当我试图添加标签时,它说不要添加它.. 我不想要生成的代码,只是关于如何使其工作的建议:)
所以,我有一个t.test函数:
my.t.test <- function(x,s1,s2){
x1 <- x[s1]
x2 <- x[s2]
x1 <- as.numeric(x1)
x2 <- as.numeric(x2)
t.out <- t.test(x1,x2,alternative="two.sided",var.equal=T)
out <- as.numeric(t.out$p.value)
return(out)
}
一个名为data
的矩阵30cols x 12k行和一个包含col名称和名为dataAnn
dataAnn
第一列包含与data
中的样本(或cols)对应的M(男性)或F(女性)列表(遵循dataAnn
中的相同顺序),我必须运行t.test比较两个样本并得到p值
当我打电话
raw.pValue <- apply(data,1,my.t.test,s1=dataAnn[,1]=="M",s2=dataAnn[,1]=="F")
我收到错误
Error in t.test(x1, x2, alternative = "two.sided", var.equal = T) :
unused argument(s) (alternative = "two.sided", var.equal = T)
我甚至尝试使用
raw.pValue <- apply(data,1,my.t.test,s1=unlist(data[,1:18]),s2=unlist(data[,19:30]))
划分我要比较的cols但在这种情况下我得到错误
Error in x[s1] : invalid subscript type 'list'
我一直在网上看,我明白第二个错误是由指数列表引起的......但这并没有真正为我澄清...... 任何输入将不胜感激!!
答案 0 :(得分:1)
您已覆盖t.test
功能。尝试将其称为my.t.test
,或者当您想要调用原始版本时使用stats::t.test
(这会调用stats
命名空间中的那个)。请记住,当您覆盖一个函数时,您需要从工作区rm
它,然后才能使用原始函数而不指定名称空间。