在Do循环中引用变量列表

时间:2014-11-13 01:58:54

标签: r loops for-loop extraction p-value

我已经创建了一系列多模态分布来测试Hartigan dip测试对单峰性的有效性。这些分布均具有2000个观察值并使用一个或多个rnorm函数创建。

此代码的目的概述如下。

  1. 计算要存储在"统计数据"中的每个分布的倾角统计量。变量

  2. 将p值提取到" dipstatistic"变量并存储以供以后使用

  3. 在每次分发经过此计算以便日后评估后,请参考此变量

  4. 我相信我在这里遇到的问题是指出在循环之外生成的变量。有没有人对如何纠正这个问题有任何建议?

    x1 <- rnorm(2000,4,.5)
    
    x2 <- c(rnorm(1000,0,1),rnorm(1000,4,1)) 
    
    x3 <- c(rnorm(667,0,1),rnorm(667,4,1),rnorm(666,8,1))
    
    x4 <- c(rnorm(500,0,1),rnorm(500,4,1),rnorm(500,8,1),rnorm(500,12,1))
    
    dip.test(x1, simulate.p.value = FALSE, B = 2000)
    dip.test(x2, simulate.p.value = FALSE, B = 2000)
    dip.test(x3, simulate.p.value = FALSE, B = 2000)
    dip.test(x4, simulate.p.value = FALSE, B = 2000)
    
    y=4
    
    dipstatistic <- rep(0,y)
    
    ID <- 1:y
    for (i in 1:y) {
      statistic <- dip.test("need to find way to identify variables" , simulate.p.value = FALSE, B = 2000)
      dipstatistic[i] <- statistic$p.value
    }
    
    dipstatistic
    

1 个答案:

答案 0 :(得分:0)

如果你在列表中加入所有变量,你可以在这里使用sapply。

dipstatistic <- sapply(list(x1,x2,x3,x4), function(x) {
    dip.test(x , simulate.p.value = FALSE, B = 2000)$p.value
})