我试图通过使用存储在数据框变量中的列引用从数据框列中提取值。也就是说,输入数据框:
g1 g2 Group
1 a d g1
2 b e g1
3 c f g2
我想使用Group
列创建一个新列,以指定来自g1
或g2
的值。期望的输出:
g1 g2 Group Group_val
1 a d g1 a
2 b e g1 b
3 c f g2 f
基于SO的其他答案,我正在尝试使用mutate的标准评估形式as.name
,quote
或lazyeval的interp
函数,但我还没想到在正确的调用中获取实际评估的列引用:
df <- data.frame("g1" = c('a', 'b' , 'c'), "g2" = c('d', 'e', 'f'), "Group"=c("g1", "g1", "g2"))
df <- mutate_(df, Group_val = as.name("Group"))
只需使用Group_val
值填充Group
。我还使用match
使用正确的列索引填充Group_val
(例如:1,1,2),但显然这只是同一问题的另一种形式。
我想用dplyr语法来解决这个问题,但如果有更容易的话,我会对非dplyr解决方案持开放态度。