r语言 - dplyr, dunn test, dim(robj) <- c(dX, dY) 中的误差:dims [产品 0] 与物体的长度不匹配



我试图通过R.

中的" asbio"软件包将被变量值的数据集传递给pairw.kw函数
example.df <- data.frame( 
                 species = sample(c("primate", "non-primate"), 50, replace = TRUE),
                 treated = sample(c("Yes", "No"), 50, replace = TRUE), 
                 gender = sample(c("male", "female"), 50, replace = TRUE), 
                 var1 = rnorm(50, 100, 5)
               )
library(dplyr)
library(asbio)
with(example.df, pairw.kw(var1, species, conf=0.95))

此代码有效。但是,

example.df %>% 
   filter(treated=="No") %>% 
   {pairw.kw("var1", "species",conf = 0.95)}

给我错误消息

dim(robj)&lt; - c(dx,dy)中的错误: DIMS [产品0]不匹配对象的长度[1]

我不理解是什么原因导致了这一点,除了假设要比较的两个向量在应用过滤器后变为不同的长度。

除了将数据明确子集以新的数据框架为单位外,是否有其他方法可以解决此问题?我知道这会起作用,但想知道是否存在更优雅的解决方案。

首先,所有 %>%管道将数据传递到 pairw.kw函数作为第一个参数。其次,pairw.kw函数希望两个向量作为输入。您可以使用magrittr软件包的%$%管道实现此目标。它的工作类似于with功能。

library(magrittr)
example.df %>% 
   filter(treated=="No") %$% 
   pairw.kw(var1, species, conf = 0.95)

评论中的问题答案:

library(tidyverse)
library(magrittr)
library(asbio)
example.df %>% 
  group_by(treated) %>%
  nest() %>%
  mutate(
    kw = map(
      data,
      ~ .x %$% pairw.kw(var1, species, conf = 0.95)
    ),
    p_val = map_dbl(kw, ~ .x$summary$`Adj. P-value`)
  )

最新更新