具有列表维度的{for}循环

时间:2016-04-13 01:32:42

标签: r for-loop

我有一个代码,我将在两个gamma分布上进行for循环。

给定形状参数列表,我将它们命名为“d”,然后我在随机伽玛函数中放入d [1]和d [2]。

我在这里简化了我想要的内容。当我在R中编码d [1]时,输出将是第一个矢量,而当我在R中编码d [2]时,输出将是第二个矢量。 我有点失败然后如果我使用for循环进行d?它将如何迭代?

*
List_1  <- list(c(4,16),c(16/9,4),c(1,16/9),c(.64,1),c(4/9,.64))
for ( d in List_1)  ##first parameter is for gamma.1, second is for gamma.2
{
 x<-rgamma(25,d[1],1)
 y<-rgamma(25,d[2],1)

 t<-t.test(x,y)$p.value
}*

如果我问一个愚蠢的问题,我很抱歉。提前致谢。

2 个答案:

答案 0 :(得分:1)

在R中,最好避免因为性能不佳而导致循环。因为你从一个列表开始lapply是一个好的开始:

lapply(List_1, FUN=function(x){t.test(rgamma(25,x[1],1), rgamma(25,x[2],1))$p.value})

apply函数获取列表,然后在t.test中的2个参数上使用gamma函数。结果将是五个p值的列表,每对一个

答案 1 :(得分:1)

您的代码运行正常。我其实不确定你在这里问什么。您可以使用print来查找迭代,如果这是您想要的,例如:

for (d in List_1){
  print(d[1])
  print(d[2])
}