【问题标题】:unused arguments and invalid subscript type list error in RR中未使用的参数和无效的下标类型列表错误
【发布时间】: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


【解决方案1】:

您已经覆盖了t.test 函数。尝试将其称为my.t.test 之类的名称,或者当您想调用原始名称时,请使用stats::t.test(这会从stats 命名空间中调用它)。请记住,当您覆盖了一个函数时,您需要在工作区中 rm 它,然后才能在不指定命名空间的情况下使用原始函数。

【讨论】:

    猜你喜欢
    • 2017-10-05
    • 2015-11-01
    • 1970-01-01
    • 2012-01-06
    • 2017-09-27
    • 1970-01-01
    • 2018-12-01
    • 2017-02-06
    • 2013-08-04
    相关资源
    最近更新 更多