在 R 中,如何对具有负整数和正整数的列进行行求和?

In R, how to do rowsums for columns with negative and positive integers?

我正在尝试对 4 列求和,其中一些列具有负值。 我这样做时收到一条错误消息:

Error in .subset(x, j) : only 0's may be mixed with negative subscripts

有没有办法克服这个问题并得到总和?我阅读了有关出现的错误的内容,但无法找到解决方案

这是我的代码:

calculation1 <- (rawdata$Concat1 * 12 / rawdata$Size) 
calculation2 <- rawdata$Concat2 * 12 / rawdata$Size
calculation3 <- rawdata$Concat3 * 12 / rawdata$Size
calculation4 <- rawdata$Concat4 * 12 / rawdata$Size

rawdata$Cost <- rowSums(rawdata[,c(calculation1, calculation2, calculation3, 
calculation4)], na.rm=TRUE)

对象 'calculation' 不是列名。我们可以使用 mgetcbind 将这些对象放入 list 并执行 rowSums

rawdata$Cost <- rowSums(do.call(cbind,
       mget(ls(pattern = '^calculation\d+$'))), na.rm = TRUE)

或使用 cbind 而不是 c 转换为 matrix(或 data.frame

rowSums(cbind(calculation1, calculation2, calculation3,  
       calculation4), na.rm = TRUE)

此外,我们可以通过

简单地完成此操作,而不是创建多个对象
rowSums(rawdata[paste0('Concat', 1:4)] * 12/rawdata$Size, na.rm = TRUE)