我在R中进行多项t测试,如下所示:
t.test(subset(data, type=="1" & string1=="string123" & string2=="string456")$value,
subset(data, type=="3" & string1=="string123" & string2=="string456")$value
我希望对string2的多个值执行这些测试:
list <- c("string456", "string457")
for (i in list){ t.test(paste(subset(data, type=="1" & string1=="string123" & string2=="",i,"")$value,
subset(data, type=="3" & string1=="string123" & string2=="",i,"")$value)
这会产生错误:
错误:“for(i in list){t.test(paste(”subset(data,type ==“1”
)中的意外数字常量
有什么建议吗?
答案 0 :(得分:1)
您不需要在循环中使用paste()
:
list <- c("string456", "string457")
for (i in list) {
t.test(subset(data, type=="1" & string1=="string123" & string2==i)$value,subset(data, type=="3" & string1=="string123" & string2==i)$value)
}
答案 1 :(得分:0)
您可以使用lapply
代替for
- 循环,并将您的t检验结果保存在列表中供以后使用。
list <- c("string456", "string457")
t_test_results <- lapply(list, function(x)
t.test(subset(data, type == "1" & string1 == "string123" & string2 == x)$value,
subset (data, type == "3" & string1 == "string123" & string2 == x)$value))
这样,您甚至可以省略$value
将整个测试数据存储在列表中,然后使用t_test_results[[1]]$value
调用该值。