首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >match.arg(p.adjust.method)中的错误:“arg”必须为NULL或字符向量

match.arg(p.adjust.method)中的错误:“arg”必须为NULL或字符向量
EN

Stack Overflow用户
提问于 2018-07-25 10:48:54
回答 2查看 3.8K关注 0票数 0

这里是我的数据

代码语言:javascript
复制
mydat=structure(list(id = c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L), group = c(1L, 
1L, 1L, 1L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 1L, 1L, 1L, 1L, 2L, 
2L, 2L, 2L, 3L, 3L, 3L, 3L), var = c(23L, 24L, 24L, 23L, 23L, 
24L, 24L, 23L, 23L, 24L, 24L, 23L, 23L, 24L, 24L, 23L, 23L, 24L, 
24L, 23L, 23L, 24L, 24L, 23L)), .Names = c("id", "group", "var"
), class = "data.frame", row.names = c(NA, -24L))

我想加入两张桌子。id是标识符。

代码语言:javascript
复制
library(tidyverse)
mdyat %>% 
  with(.,pairwise.wilcox.test(var,id, group, exact =F)) %>% 
  broom::tidy() %>% 
 complete(id,group) %>% 
  left_join(mydat %>% 
              group_by(id,group)) %>% 
              summarise_all(c("mean", "sd", "median")) 
            by=c("id,group")

并得到错误

代码语言:javascript
复制
Error in match.arg(p.adjust.method) : 
  'arg' must be NULL or a character vector

如何分别为每个标识符执行此脚本,即所需的输出

代码语言:javascript
复制
id      mean    sd      median  p.value
1   1   23,5    0.5773503   23,5    NA
1   2   23,5    0.5773503   23,5    1
1   3   23,5    0.5773503   23,5    1
2   1   23,5    0.5773503   23,5    NA
2   2   23,5    0.5773503   23,5    1
2   3   23,5    0.5773503   23,5    1
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-07-25 11:14:54

第一部分可以使用group_bydo进行修复,如下所示。

代码语言:javascript
复制
mydat %>% 
  group_by(id) %>%
  do({
    with(., pairwise.wilcox.test(var, group, exact =F)) %>% broom::tidy()
  }) 

 ## # A tibble: 6 x 4
 ## # Groups:   id [2]
 ##      id group1 group2 p.value
 ##   <int> <fctr>  <chr>   <dbl>
 ## 1     1      2      1       1
 ## 2     1      3      1       1
 ## 3     1      3      2       1
 ## 4     2      2      1       1
 ## 5     2      3      1       1
 ## 6     2      3      2       1

为了将其与摘要统计相结合,您需要决定要加入哪个组(group1还是group2)。在下面的文章中,我加入了group1,所以meansdmedian指的是group1p.value是指group1group2之间的区别。

代码语言:javascript
复制
mydat %>% 
  group_by(id) %>%
  do({
    with(., pairwise.wilcox.test(var, group, exact =F)) %>% broom::tidy()
  }) %>% 
  mutate(group1 = as.numeric(as.character(group1)), 
         group2 = as.numeric(as.character(group2))) %>%
  complete(group1 = mydat$group) %>%
  left_join(mydat %>% group_by(id,group) %>% summarise_all(c("mean", "sd", "median")), 
            by=c('id', 'group1'='group'))
票数 2
EN

Stack Overflow用户

发布于 2018-07-25 11:06:33

函数参数是错误的:

代码语言:javascript
复制
pairwise.wilcox.test(var,id, group, exact =F)

?pairwise.wilcox.test将正确的语法声明为:

代码语言:javascript
复制
pairwise.wilcox.test(x, g, p.adjust.method = p.adjust.methods,
                      paired = FALSE, ...)

这意味着第三个函数参数应该是p.adjust.method,而不是group

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51517062

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档