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

在R中,如何对具有负整数和正整数的列进行行和运算?,r,rowsum,R,Rowsum,我尝试对4列求和,其中一些列的值为负值。 执行此操作时,我会收到一条错误消息: Error in .subset(x, j) : only 0's may be mixed with negative subscripts 有没有办法克服这个问题并得到总数?我阅读了关于出现错误的书面说明,但无法找到解决方案 这是我的密码: calculation1 <- (rawdata$Concat1 * 12 / rawdata$Size) calculation2 <- rawdata$C

我尝试对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)

calculation1对象“calculation”不是列名。我们可以使用
mget
cbind
将这些对象放入
列表
,并执行
行和

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

同样,我们也可以通过简单的方法来创建多个对象,而不是创建多个对象

rowSums(rawdata[paste0('Concat', 1:4)] * 12/rawdata$Size, na.rm = TRUE)

谢谢@akrun,这成功了!但我如何将其作为列添加到数据帧中?(rawdata)@Pre只需将其分配给
rawdata$Cost哦,是的,这成功了,谢谢!我这样做了:rawdata$Cost是的,这是正确的-这是一个快速的方法,我更改了示例中的列名:它们的格式为Xconcat(其中X是每个列的不同字符串)
rowSums(rawdata[paste0('Concat', 1:4)] * 12/rawdata$Size, na.rm = TRUE)