与之相似:mutate rowSums exclude one column,但在我的情况下,我真的想使用
我以为这会起作用,但它给了我一个奇怪的错误提示:
select
来删除一个特定的列或一组列。
我试图理解为什么这种方法是行不通的。d <- data.frame(
Alpha = letters[1:26],
Beta = rnorm(26),
Epsilon = rnorm(26),
Gamma = rnorm(26)
)
我以为这会起作用,但它给了我一个奇怪的错误提示:
# Total = Beta + Gamma
d <- mutate(d,Total = rowSums(select(d,-Epsilon,-Alpha)))
Error: All select() inputs must resolve to integer column positions.
The following do not:
* -structure(1:26, .Label = c("a", "b", "c", "d", "e", "f", "g", "h", "i...
In addition: Warning message:
In Ops.factor(1:26) : ‘-’ not meaningful for factors
我希望能够在长链中完成此操作,并保持“dplyr风格”... 让我感到奇怪的是,尽管不使用典型的dplyr语法,这实际上非常简单,但这样做很困难:
d$Total <- rowSums(select(d, -Alpha, -Epsilon)) # This works!
mutate(d, Total = d %>% .[c("Beta", "Gamma")] %>% rowSums)
来处理,但那只是基本上像使用transform()
的mutate()
,我不认为那比rowSums(d[c("Beta", "Gamma")])
更好。 - Rich Scrivendplyr_0.7.6
中,上述语法mutate(d,Total = rowSums(select(d,-Epsilon,-Alpha)))
似乎可以工作(至少对我来说是这样)。 - tjebo