我想使用for循环对一堆数据应用shapiro-wilk测试,并将p值保存在名为“shapiro.mat_mining”的矩阵中。 这是我在没有成功的情况下尝试过的,
shapiro.mat_mining=matrix(c("Zr","Sr","Rb","Zn","Cu","Fe","Mn","V","Ti","Sc","Ca","K","S","Ba","Cs",numeric(15)),nrow=(2),byrow=TRUE)
#Shapiro-wilk
for (ii in c("Zr","Sr","Rb","Zn","Cu","Fe","Mn","V","Ti","Sc","Ca","K","S","Ba","Cs")){
shapiro.mat_mining[2,ii]=shapiro.test(VI9A_mining[,ii])$p.value
}
“Zr”,“Sr”,..都是载体。 VI9A_mining是含有载体Zr,Sr,......的基质。
运行时,错误信息为:
"Error in `[<-`(`*tmp*`, 2, ii, value = 0.219114698955686) :
no 'dimnames' attribute for array"
此脚本:“SW_mining_zr=shapiro.test(VI9A_mining[,1])$p.value
”有效。但我想通过循环来做到这一点。
答案 0 :(得分:0)
不幸的是,恐怕您的代码不可复制。我正在试图概括您的麻烦。
for(i in 1:length(levels(df$Class))){ # Class is a categorical variable of df
for(j in 1:length(df){
tmp <- df[df$Class == i,]
if(tmp[,j] == tmp$Class){
return(NULL)
} else {
shapiro.test(as.numeric(tmp[,j]))
}
}
}