0

我有两个组的数据点排列在同一行中,还有多行数据(400k+)。我想比较这 400K+ 行中每一行的两组的方差。数据将类似于以下内容 -

y<-rbind(c(1,2,20,50,100,1,2,3,1,2),c(20,2,80,50,100,1,2,3,1,2))
group<-structure(c(1L,1L,1L,1L,1L,2L,2L,2L,2L,2L), .Label = c("T","C"), class="factor")

我可以在单行数据上运行leveneTestcar中的,例如 -

leveneTest(y = y[1,], group = group) # first row of data

Levene's Test for Homogeneity of Variance (center = median)
  Df F value  Pr(>F)  
group  1   4.527 0.06603 .
   8 

或者

leveneTest (y = y[2,], group = group) # second row of data

Levene's Test for Homogeneity of Variance (center = median)
  Df F value   Pr(>F)   
group  1   11.92 0.008662 **
   8 

但显然这对于​​ 400k+ 行数据是不切实际的。

我认为这将是一些简单的事情,比如apply像我一样使用t.test,例如 -

apply(y, 1, function (x) t.test(x[1:5],x[6:10])$p.value)
[1] 0.15260837 0.05551746

但是当我尝试leveneTest

apply(y, 1, function(x) leveneTest (y = y, group = group))

我收到以下错误

Error in complete.cases(y, group) : 
not all arguments have the same length

有谁知道如何做到这一点?

4

1 回答 1

1

当我们使用匿名函数调用时,'y'leveneTest是'x'(即每行中的值)而不是完整的数据集。

apply(y, 1, function(x) leveneTest (y = x, group = group))

或者不使用匿名呼叫,以下也应该有效

apply(y, 1, FUN = leveneTest, group=group)
于 2016-05-29T04:33:05.727 回答