如何在同一代码块中正确使用dplyr的rename与mutate函数?
问题修正方案
方案1报错的核心原因:在管道链中你直接引用了原始数据框dat,但此时dat还未被rename修改,不存在newX列。管道每一步的操作对象是前一步处理后的数据集,而非原始的dat,必须引用当前管道传递的数据集而非原始变量名。
以下是几种修正后的方案1代码:
方法1:直接引用列名结合cbind
dat %>% rename(newX = x) %>% mutate(z = rowSums(cbind(newX, y) == 1))
方法2:用select指定当前数据集的列
dat %>% rename(newX = x) %>% mutate(z = rowSums(select(., newX, y) == 1))
方法3:使用.data代词引用当前数据集
dat %>% rename(newX = x) %>% mutate(z = rowSums(.data[c("newX", "y")] == 1))
这三种方法都能正确调用rename后的newX列,完成新列z的计算。
内容的提问来源于stack exchange,提问作者rez
相关产品推荐
相关产品推荐

