我有一组患者分数,例如:
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-tests的结果打印到控制台,但它告诉我:
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没有多大作用,似乎无法找到快速答案。任何帮助都会很棒?
答案 0 :(得分: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
答案 1 :(得分:0)
试试这个:for (i in patients){t.test(get(i),HC)}
问题是i
在你的病人载体中循环并返回一个角色。 R不知道如何处理角色'P1'
。 get
告诉R在环境中查找名为'P1'
的对象。