Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在dplyr中的行和正常列之间切换_R_Dplyr_Rowwise - Fatal编程技术网

在dplyr中的行和正常列之间切换

在dplyr中的行和正常列之间切换,r,dplyr,rowwise,R,Dplyr,Rowwise,我想知道如何在dplyr中在行和正常(列)之间切换。例如,下面的代码可以工作,但它会生成一些红色日志,如警告。如何以常规样式(而不是按行)执行“选择”命令: df%rowwise()%%>% 突变(输出=列表(isoreg(c_跨(第1年:第4年))$yf))%>% 三年:最新产量%>% 选择(,-以“年”开头) 我认为,通过在上述模式之间轻松切换,问题将得到解决。rowwise()实际上是对数据进行分组。因此,ungroup() 通常,总是在执行分组操作后立即取消数据分组。否则,代码很容易出

我想知道如何在dplyr中在行和正常(列)之间切换。例如,下面的代码可以工作,但它会生成一些红色日志,如警告。如何以常规样式(而不是按行)执行“选择”命令:

df%rowwise()%%>%
突变(输出=列表(isoreg(c_跨(第1年:第4年))$yf))%>%
三年:最新产量%>%
选择(,-以“年”开头)
我认为,通过在上述模式之间轻松切换,问题将得到解决。

rowwise()
实际上是对数据进行分组。因此,
ungroup()

通常,总是在执行分组操作后立即取消数据分组。否则,代码很容易出错。

rowwise()
实际上会对数据进行分组。因此,
ungroup()


通常,总是在执行分组操作后立即取消数据分组。否则,您的代码很容易出错。

返回一个命名输出,以避免出现警告。一种方法是使用
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
库(dplyr)
df%>%
行()
突变(输出=列表(集合名(isoreg(c_跨(第1年:第4年))$yf,
粘贴0('col',1:4))%>%
三年:最新产量%>%
选择(-以('year')开头)
#一个tibble:6x5
#id col1 col2 col3 col4
#      
#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

返回避免警告的命名输出。一种方法是使用
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
库(dplyr)
df%>%
行()
突变(输出=列表(集合名(isoreg(c_跨(第1年:第4年))$yf,
粘贴0('col',1:4))%>%
三年:最新产量%>%
选择(-以('year')开头)
#一个tibble:6x5
#id col1 col2 col3 col4
#      
#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

我添加了ungroup(),但它仍然像日志一样给我发出红色警告。你指的是什么警告?“新名称…”我添加了ungroup(),但它仍然像日志一样给我发出红色警告。你指的是什么警告?“新名字…”?