我有一个数据框架,并在数据之间做了一个方差分析。在ANOVA之后,我想使用其中一个结果列进行计算,并创建一个带有mutate()函数的新列。但是,出现一个错误,指示不能对anova类对象执行此操作:
Error: `x` must be a vector, not a <anova_test/data.frame/rstatix_test> object.有人能帮我用方差分析结果的F列进行计算(F + 1)吗?

library(dplyr)
library(rstatix)
Temperature <- factor(c(rep("cold", times = 4),
rep("hot", times = 4)),
levels = c("cold", "hot"))
Light <- factor(rep(c(rep("blue", times = 2),
rep("yellow", times = 2)),
times = 2),
levels = c("blue", "yellow"))
Result <- c(90.40, 85.20, 21.70, 25.30,
75.12, 77.36, 6.11, 10.8)
Data <- data.frame(Temperature, Light, Result)
NewColumn <- Data %>%
anova_test(formula = Result ~ Temperature*Light) %>%
mutate(New= `F` + 1) #<-------- Not working发布于 2022-01-05 14:00:40
正如JKupzig在评论中提到的,这是dplyr中已知的一个问题,如这里所记录的:https://github.com/tidyverse/dplyr/issues/5286。
这个问题是由于anova_test()按照这个顺序创建了一个具有类anova_test、data.frame和rstatix_test的输出数据框架,而如果类向量中的最后一个元素不是data.frame,则dplyr中的mutate()似乎会被挂起。您可以按照以下方式验证anova输出的类:
Data %>% anova_test(formula = Result ~ Temperature*Light) %>% class()
[1] "anova_test" "data.frame" "rstatix_test"作为解决办法,您可以在as_tibble()之后向dplyr管道中添加anova_test()。这会按照这个顺序将类重置为tbl_df、tbl和data.frame。
Data %>% anova_test(formula = Result ~ Temperature*Light) %>% as_tibble() %>% class()
[1] "tbl_df" "tbl" "data.frame"
Data %>%
anova_test(formula = Result ~ Temperature*Light) %>%
as_tibble() %>%
mutate(New= `F` + 1)
# A tibble: 3 x 8
Effect DFn DFd F p `p<.05` ges New
<chr> <dbl> <dbl> <dbl> <dbl> <chr> <dbl> <dbl>
1 Temperature 1 4 42.2 0.003 "*" 0.914 43.2
2 Light 1 4 1041. 0.0000055 "*" 0.996 1042.
3 Temperature:Light 1 4 0.725 0.442 "" 0.153 1.72注意,此操作移除类anova_test和rstatix_test。如果这些类在整个过程中都很重要,那么使用与magrittr包不同的magrittr解决方案(magrittr是dplyr的依赖项,因此不需要单独安装)。
Data %>%
anova_test(formula = Result ~ Temperature*Light) %>%
magrittr::set_class(c("anova_test", "rstatix_test", "data.frame")) %>%
class()
[1] "anova_test" "rstatix_test" "data.frame"
Data %>%
anova_test(formula = Result ~ Temperature*Light) %>%
magrittr::set_class(c("anova_test", "rstatix_test", "data.frame")) %>%
mutate(New = `F` + 1)
ANOVA Table (type II tests)
Effect DFn DFd F p p<.05 ges New
1 Temperature 1 4 42.250 3.00e-03 * 0.914 43.250
2 Light 1 4 1041.366 5.50e-06 * 0.996 1042.366
3 Temperature:Light 1 4 0.725 4.42e-01 0.153 1.725https://stackoverflow.com/questions/70592231
复制相似问题