为什么lapply有效而apply无效?

时间:2020-01-15 02:24:49

标签: r

我的数据:

IS NOT NULL

带有 df_1 <- data.frame( x = replicate( n = 3, expr = runif(n = 30, min = 20, max = 100) ), y = sample( x = 1:3, size = 30, replace = TRUE ) ) 的跟随代码有效:

lapply

但是,使用lapply(X = names(df_1)[c(1:3)], FUN = function(x) { pairwise.t.test( x = df_1[, x], g = df_1[['y']], p.adj = 'bonferroni' ) }) 不会:

apply

apply错误(X =名称(df_1)[c(1:3)],MARGIN = 2,FUN = function(x){: dim(X)必须为正长度

为什么会出问题?它们不相等吗?

1 个答案:

答案 0 :(得分:1)

要申请,您应该改用

apply(X = df_1[1:3], MARGIN = 2, FUN = function(x) {
    pairwise.t.test(
    x = x, 
    g = df_1[['y']], 
    p.adj = 'bonferroni'
 )
})

那是因为来自?apply

如果MARGIN的长度为1,并且尺寸为dim(X)[MARGIN]的数组,则应用返回向量。

您尝试将names(df_1)[c(1:3)]用作具有

apply的参数
dim(names(df_1)[c(1:3)])[2]
#NULL

因此,您会收到错误消息。