在 dplyr 中按行方式和按列方式切换

switch between row wise and normal column wise in dplyr

我想知道如何在 dplyr 中在按行和按列(按列)之间切换。例如,下面的代码有效,但它会生成一些红色日志,如警告。我怎么能以普通样式(不是按行)执行“select”命令:

df <- tibble(id = 1:6, year1 = 15:10, year2 = 13:8, year3 = 30:35, year4 = 40:45)
df %>% rowwise() %>%  
mutate(output = list(isoreg(c_across(year1:year4))$yf)) %>%
tidyr::unnest_wider(output) %>%
select(., -starts_with("year"))

我认为通过在上述模式之间轻松切换问题就可以解决。

rowwise() 实际上是对您的数据进行分组。因此,ungroup() 放弃按行行为。

一般来说,总是在完成分组操作后立即取消分组。否则,您的代码很容易出错。

Return 避免警告的命名输出。一种方法是使用 setNames.

library(dplyr)

df %>% 
  rowwise() %>%  
  mutate(output = list(setNames(isoreg(c_across(year1:year4))$yf, 
                       paste0('col', 1:4)))) %>%
  tidyr::unnest_wider(output) %>%
  select(-starts_with('year'))


# A tibble: 6 x 5
#     id  col1  col2  col3  col4
#  <int> <dbl> <dbl> <dbl> <dbl>
#1     1    14    14    30    40
#2     2    13    13    31    41
#3     3    12    12    32    42
#4     4    11    11    33    43
#5     5    10    10    34    44
#6     6     9     9    35    45