首页 > 解决方案 > 将数据框中的行列组合分配给变量

问题描述

我经常遇到以下问题。假设我从 dplyr 链生成以下汇总表:

dat = read.table(text = "treatment mean_pre sd_pre mean_post sd_post
DD  14.78429    20.65952    13.95886    18.86172
DR  10.50125    17.51840    21.33969    23.56563
RD  17.33781    19.19242    26.30031    26.10222
RR  24.44870    23.38217    26.74986    25.04986", header = T)

然后,我手动构造变量以供将来的代码部分使用,如下所示:

dd_mean_pre = 14.78429
dd_sd_pre = 13.95886
dd_mean_post = 13.95886
dd_sd_post = 18.86172
dr_mean_pre = 10.50125

依此类推,对于数据框中的所有单元格。是否有更快的方法将此数据框的行和列组合动态分配给 R 中的变量?

标签: rdplyr

解决方案


也许,我们可以转向“长”格式,然后unite

library(dplyr)
library(tidyr)
out  <- dat %>%
        pivot_longer(cols = -treatment) %>% 
        mutate(treatment = tolower(treatment)) %>%
        unite(trtname, treatment, name)

如果我们需要它作为不同的对象(不推荐)

library(tibble)
deframe(out) %>%
     as.list %>% 
     list2env(.GlobalEnv)

对象是在全局环境中创建的

rr_mean_pre
#[1] 24.4487
dr_mean_post
#[1] 21.33969

推荐阅读