R:变量迭代
我有以下数据集1: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)
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