【发布时间】:2012-11-07 05:25:36
【问题描述】:
我正在为一项任务而苦苦挣扎,我希望得到您的意见。 注意:这是一个家庭作业,但是当我尝试添加标签时,它说不要添加它.. 我不想要生成的代码,只是关于如何让它工作的建议:)
所以,我有一个 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 行和一个注释文件,其中包含名为 dataAnn 的列上的列名称和数据
dataAnn 第一列包含与data 中的样本(或列)相对应的 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]))
划分我想比较的列,但在这种情况下我得到了错误
Error in x[s1] : invalid subscript type 'list'
我一直在网上查找,我知道第二个错误是由索引作为列表引起的......但这并没有真正为我澄清...... 任何意见将不胜感激!
【问题讨论】:
-
您已经覆盖了
t.test函数。尝试将其称为my.t.test之类的名称,或者当您想调用原始名称时,请使用stats::t.test -
@James 完全正确。
-
@James 和 @David 实际上我只是编辑了代码以将
t.test更改为my.t.test避免递归,但我得到关于unused arguments的相同错误 -
@Seb:那是因为你的环境中仍然有被覆盖的
t.test。执行rm(t.test)(这将删除您定义的t.test,但保留内置的)然后再次运行。 -
是的,这是一种常见的危险。 @James 应该将他的评论作为答案发布,以便您接受!
标签: r statistics