R 是否可以动态更改列(列中的值具有其他列名)

R 是否可以动态更改列(列中的值具有其他列名),r,dplyr,tidyverse,rlang,R,Dplyr,Tidyverse,Rlang,所以我有一个数据帧的一列,它包含一个值,它等于一个不同的列名。对于每一行,我想更改名为的列的值 df <- tibble(.rows = 6) %>% mutate(current_stage = c("Stage-1", "Stage-1", "Stage-2", "Stage-3", "Stage-4", "Stage-4"), `Stage-1` = c(1,1,1,2,4,5), `Stage-2` = c(40,50,20,10,15,10), `Stage-3` = c(

所以我有一个数据帧的一列,它包含一个值,它等于一个不同的列名。对于每一行,我想更改名为的列的值

df <- tibble(.rows = 6) %>% mutate(current_stage = c("Stage-1", "Stage-1", "Stage-2", "Stage-3", "Stage-4", "Stage-4"), `Stage-1` = c(1,1,1,2,4,5), `Stage-2` = c(40,50,20,10,15,10), `Stage-3` = c(1,2,3,4,5,6), `Stage-4` = c(NA, 1, NA, 2, NA, 3))

A tibble: 6 x 5
current_stage `Stage-1` `Stage-2` `Stage-3` `Stage-4`
<chr>             <dbl>     <dbl>     <dbl>     <dbl>
Stage-1               1        40         1        NA
Stage-1               1        50         2         1
Stage-2               1        20         3        NA
Stage-3               2        10         4         2
Stage-4               4        15         5        NA
Stage-4               5        10         6         3
但我得到的错误是:找不到对象“current\u stage”中的错误

这可能吗?还是我应该咬紧牙关写一个不同的函数?

在tidyverse中,我认为使用长格式和聚集是最简单的方法,如下所示:

图书馆管理员 df%>% rowid_到_列%>% gatherstage,值,-current_stage,-rowid%>% mutatevalue=if_elsestage==当前_阶段,15,值%>% 传播阶段、价值 >一个tibble:6x6 >rowid当前_阶段`1阶段`2阶段`3阶段`4阶段` > >1阶段-1 15 40 1 NA >2第1阶段15 50 2 1 >3第2阶段1 15 3 NA >4 4第3阶段2 10 15 2 >5阶段-4 4 15 5 15 >6阶段-4 5 10 6 15
由v0.2.1于2019-05-20创建,您可以收集到更长的格式,并在行中使用它。您可以使用基本R.df以矢量化的方式进行此操作
df %>% mutate(!!rlang::sym(current_stage) := 15)