对于带字符串变量的循环

时间:2017-01-31 09:18:12

标签: r for-loop

我在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”

)中的意外数字常量

有什么建议吗?

2 个答案:

答案 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调用该值。

相关问题