r - dplyr,dunn 测试,dim(robj) <- c(dX, dY) 中的错误:dims [product 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) <- c(dX, dY) 中的错误:dims [product 0] 与对象 [1] 的长度不匹配
除了假设被比较的两个向量在应用过滤器后变得不同长度之外,我无法理解是什么原因造成的。
除了将数据显式设置为新数据框并使用它之外,还有其他方法可以解决此问题吗?我知道这会起作用,但想知道是否存在更优雅的解决方案。
解决方案
首先,%>%
管道将 data.framepairw.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`)
)
推荐阅读
- javascript - Gatsby (gatsby-plugin-transition-link) - 导航到同一路线时刷新页面
- unicode - 单位分隔符“我们”
- python - 如何为奇数个变量创建随机匹配的对列表而不进行替换?
- facebook - Dialogflow Facebook Messenger webhook - TTS 响应
- javascript - React native - 将水平 ScrollView 的高度适应其子项
- reactjs - React 中的渲染组件显示闪烁
- bash - 如何在 Bash 脚本中将 Github 风格的 Wiki 页面链接转换为 Markdown 风格的链接
- c# - == 不适用于字符串和字符串数组值
- stata - Stata 通过将 Var 列表相乘生成新的变量列表
- macos - macOS 上可搜索修饰符的键盘命令