我想用变量的名称对一些变量进行行加和。
我尝试了一些方法,但都失败了。
如何正确运行sum(ttt)?
任何帮助我们都将不胜感激!
library(dplyr)
data(mtcars)
m2 = mtcars[1:3,10:11]
# Run
m2 %>%
rowwise() %>%
mutate(cc = sum(carb, gear))
# Not Run
m2 %>%
rowwise() %>%
mutate(cc = sum('carb', 'gear'))
# Not Run
ttt = c('carb', 'gear')
m2 %>%
rowwise() %>%
mutate(cc = sum(ttt))
# Run but the result was wrong
m2 %>%
rowwise() %>%
mutate(cc = sum(get(ttt)))
# Not Run
m2 %>%
rowwise() %>%
mutate(cc = sum(mget(ttt)))发布于 2020-12-25 00:14:17
我们可以转换为symbols并求值(!!!)
library(dplyr)
m2 %>%
rowwise() %>%
mutate(cc = sum(!!! rlang::syms(c('carb', 'gear'))))-output
# A tibble: 3 x 3
# Rowwise:
# gear carb cc
# <dbl> <dbl> <dbl>
#1 4 4 8
#2 4 4 8
#3 4 1 5或者在子集上使用rowSums,该子集将被矢量化且速度更快
m2 %>%
mutate(cc = rowSums(select(., 'carb', 'gear')))select既可以使用带引号的列名,也可以使用不带引号的列名
https://stackoverflow.com/questions/65439943
复制相似问题