Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R:变量迭代_R_Normal Distribution - Fatal编程技术网

R:变量迭代

R:变量迭代,r,normal-distribution,R,Normal Distribution,我有以下数据集1: Height | Group 1,556 | A 2,111 | B 1,556 | A 2,341 | B 1,256 | A 2,411 | B 我想通过变量组计算高度的shapiro-wilk正态性检验 myvar <- c("Height") res<- vector("list", length(myvars)) a <- factor(dataset1$Group) myfactor <- levels(a)

我有以下数据集1:

Height | Group
1,556  |  A
2,111  |  B
1,556  |  A
2,341  |  B
1,256  |  A
2,411  |  B
我想通过变量组计算高度的shapiro-wilk正态性检验

myvar <- c("Height")

res<- vector("list", length(myvars))

a <- factor(dataset1$Group)
myfactor <- levels(a)

i=1
for (myfactor in dataset1) {
    res[[i]] <- shapiro.test(dataset1$Size)
    i=i+1
}

myvar编写新代码比查找代码中的所有错误更容易

lapply(split(dataset1$Height,dataset1$Group),shapiro.test)

$`  A`

        Shapiro-Wilk normality test

data:  X[[1L]] 
W = 0.75, p-value = 3.031e-08


$`  B`

       Shapiro-Wilk normality test

data:  X[[2L]] 
W = 0.9134, p-value = 0.4295

你的代码被各种方式套住了。以下是一些:

  • 在循环外部创建
    myfactor
    ,然后将其作为迭代器
  • dataset1
    是您的数据(data.frame?)。我甚至不确定
    myfactor
    将在
    for(dataset1中的myfactor)
    创建的循环中包含什么
  • 您不会将发送到
    shapiro.test的数据子集化
  • myvars
    未定义,
    dataset1$Size
    可能应该是
    dataset1$Height
  • 试试这个

    res <- list()
    for (mf in levels(dataset1$Group)) {
        res[[mf]] <- shapiro.test(dataset1$Height[dataset1$Group == mf])
    }
    
    res谢谢您的回复。
    未来通知:
    如果希望(针对数据集中的选定变量)按因子计算正态性测试:

    variaveis <- colnames(dataset1)[c(1:2)]
    /////alternative: variaveis <- c("height", "weight") 
    res<- vector("list", length(variaveis))
    
    for (i in 1:length(variaveis)) {
        #calcula o shapiro por factor para variaveis selecionadas
        res[[i]] <- lapply(split(dataset1[,variaveis[i]] ,dataset1$sex), shapiro.test)
    }
    res
    
    variaveis