R 对于具有列表维度的循环
我有一个代码,我将在两个伽马分布上做一个for循环 给定形状参数的列表,我将它们命名为“d”,然后在随机伽马函数中输入d[1]和d[2] 我已经简化了我想问的问题。当我在R中编码d[1]时,输出将是第一个向量,而当我在R中编码d[2]时,输出将是第二个向量。 我有点失落,如果我用for循环代替d,它将如何迭代R 对于具有列表维度的循环,r,for-loop,R,For Loop,我有一个代码,我将在两个伽马分布上做一个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) ##fi
*
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
}*
*
列表_1在R中,最好避免for循环,因为它们的性能较差。因为您是从列表开始的,所以Lappy是一个很好的开始:
lapply(List_1, FUN=function(x){t.test(rgamma(25,x[1],1), rgamma(25,x[2],1))$p.value})
应用函数获取您的列表,然后对t测试中的2个参数使用gamma函数。结果将是五个p值的列表,R中每对p值一个。最好避免使用性能较差的for循环。因为您是从列表开始的,所以Lappy是一个很好的开始:
lapply(List_1, FUN=function(x){t.test(rgamma(25,x[1],1), rgamma(25,x[2],1))$p.value})
应用函数获取您的列表,然后对t测试中的2个参数使用gamma函数。结果将是五个p值的列表,每对一个代码运行正常。我不知道你在问什么。如果需要,可以使用print
查找迭代词,如:
for (d in List_1){
print(d[1])
print(d[2])
}
您的代码运行良好。我不知道你在问什么。如果需要,可以使用print
查找迭代词,如:
for (d in List_1){
print(d[1])
print(d[2])
}
在你的例子中,x和y是什么?在for循环中d在哪里使用?我对你的问题感到困惑。更准确地说:你到底在问什么?您的代码是否生成所需的输出?如果是,您可以保持原样。for
循环和*apply
函数之间的性能差异是。您是否收到上述代码中的任何错误?@user1357015 x和y是从分布中随机抽取的样本。为了在for循环中使用“d”,我编辑了我的问题。你可以看看。但是我对R还是新手,所以请原谅我在解释…>@RHertel嗨,如果我没有在问题中明确说明,我道歉。事实上,我还在编写代码的过程中,我发现自己在这个for循环解释中很困惑……在您的示例中,x和y是什么?在for循环中d在哪里使用?我对你的问题感到困惑。更准确地说:你到底在问什么?您的代码是否生成所需的输出?如果是,您可以保持原样。for
循环和*apply
函数之间的性能差异是。您是否收到上述代码中的任何错误?@user1357015 x和y是从分布中随机抽取的样本。为了在for循环中使用“d”,我编辑了我的问题。你可以看看。但是我对R还是新手,所以请原谅我在解释…>@RHertel嗨,如果我没有在问题中明确说明,我道歉。事实上,我仍在编写代码的过程中,我发现自己在这个for循环解释中感到困惑…嗨,谢谢,我将运行这个来观察发生了什么:)嗨,谢谢,我将运行这个来观察发生了什么:)嗨,谢谢,我还将阅读apply函数:)您好,谢谢,我还要通读应用功能。:)