【问题标题】:t-tests on different groups by iteration in R通过 R 中的迭代对不同组进行 t 检验
【发布时间】:2014-03-31 16:05:01
【问题描述】:

我有一组患者评分,例如:

 P1 <- c(7.81,6.93,7.11)
 P2 <- c(8.61,7.95,8.11)
 P3 <- c(8.41,7.65,7.01)
 ....etc

我有一大群健康人的分数,例如:

 HC <- c(5.22,4.87,6.93,5.27,6.01,4.55,.....etc)

我已经在向量中列出了患者的姓名:

 patients <- c('P1','P2','P3',....etc)

我正在尝试针对健康对照组对每个患者的得分进行 t 检验。我写过:

 for (i in patients){t.test(patients[i],HC)}

我期待 R 将大量 t 检验的结果打印到控制台,但它告诉我:

 Error in t.test.default(patients[i], HC) : 
 not enough 'x' observations
 In addition: Warning message:
 In mean.default(x) : argument is not numeric or logical: returning NA

我只需要在数据上获取一些 P 值,并认为这可能是一个简单的语法问题,但对 R 的工作并不多,而且似乎无法找到快速的答案。有什么帮助会很好吗?

【问题讨论】:

    标签: r for-loop statistics


    【解决方案1】:

    使用list 表示包含实际向量的patients,而不是向量的名称:

    > patients <- list(P1, P2, P3)
    > for (i in patients){print(t.test(i,HC)$p.value)}
    [1] 0.005015573
    [1] 0.0002672035
    [1] 0.00899473
    

    【讨论】:

      【解决方案2】:

      试试这个:for (i in patients){t.test(get(i),HC)}

      问题在于i 正在循环遍历您的患者向量并返回一个字符。 R 不知道如何处理字符'P1'get 告诉 R 在环境中查找名为 'P1' 的对象。

      【讨论】:

      • 这似乎对我不起作用,我得到:get(i) 中的错误:第一个参数无效
      猜你喜欢
      • 2015-04-16
      • 1970-01-01
      • 1970-01-01
      • 2015-09-17
      • 2017-05-17
      • 2023-04-09
      • 1970-01-01
      • 2015-12-25
      • 1970-01-01
      相关资源
      最近更新 更多