r - mutate 和 rowSums 排除列

标签 r dplyr

类似于: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! 

最佳答案

@akrun 已经提供了 relevant link关于这个问题。关于dplyr解决方案,我实际上会使用 do :

d %>%
  do({
    .$Total <- rowSums(select(., -Epsilon, -Alpha))
    .
  })

关于r - mutate 和 rowSums 排除列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33314971/

相关文章:

r - 如何计算两个分布的卷积的 x 值?

r - 如何从RStudio中运行的脚本获取所有输出

r - R 中泊松回归的预测不准确

html - 使用 R 和 XPath,如何从结果中删除格式元素,例如\n 和\t?

用带标签的增量键替换 NA 值

r - 查找两个分类变量的比率

从 dplyr 中的变量中引用列名

R 带有子列表的列表 : Extract all elements that match a rule into array

r - 如何移动嵌套 tibbles 中的 tibbles 列?

dplyr 的相对频率/比例