1

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

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"))

我认为通过在上述模式之间轻松切换,问题将得到解决。

4

2 回答 2

0

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

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

于 2020-07-02T15:18:40.857 回答
0

返回避免警告的命名输出。一种方法是使用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
于 2020-07-03T00:24:41.623 回答