R - shapiro-wilk测试 - 循环

时间:2017-03-09 15:07:26

标签: r loops

我想使用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”有效。但我想通过循环来做到这一点。

1 个答案:

答案 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]))
      }
    }
  }