我有一个为基因型(gen = "WT")和治疗(treat = "saline")提供参考水平的2×2设计。我正在尝试重用代码,而不是硬编码我的级别(我的WT将始终是引用级别,而不管我使用的是什么其他基因型)。这里是我的数据集的一个玩具例子。
library(tidyverse)
toy1 <- tidyr::expand_grid(
gen = c("WT", "QQ"),
treat = c("saline", "ab")
)
toy1 %>%
mutate(gen = fct_relevel(gen, reference="WT"),
treat = fct_relevel(treat, reference="saline"),
inter = interaction(gen, treat)) %>%
pull(inter)这给了我
[1] WT.saline WT.ab QQ.saline QQ.ab
Levels: WT.saline QQ.saline WT.ab QQ.ab这是接近的,但是我想要的输出应该是
[1] WT.saline WT.ab QQ.saline QQ.ab
Levels: WT.saline WT.ab QQ.saline QQ.ab在这种情况下,tibble和级别的顺序是相同的,但不能认为这是理所当然的,而levels(inter)才是我关心的问题。
发布于 2021-08-31 19:18:52
我们可以用lex.order成为TRUE in interaction
toy1 %>%
mutate(gen = fct_relevel(gen, reference="WT"),
treat = fct_relevel(treat, reference="saline"),
inter = interaction(gen, treat, lex.order = TRUE)) %>%
pull(inter)-output
[1] WT.saline WT.ab QQ.saline QQ.ab
Levels: WT.saline WT.ab QQ.saline QQ.ab或者,我们可以在末尾添加一个factor,其中levels指定为unique值。
toy1 %>%
mutate(gen = fct_relevel(gen, reference="WT"),
treat = fct_relevel(treat, reference="saline"),
inter = interaction(gen, treat),
inter = factor(inter, levels = unique(inter))) %>%
pull(inter)-output
[1] WT.saline WT.ab QQ.saline QQ.ab
Levels: WT.saline WT.ab QQ.saline QQ.abhttps://stackoverflow.com/questions/69004221
复制相似问题