首页 > 解决方案 > 在 R 中,如何对具有负整数和正整数的列进行行和?

问题描述

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

标签: rrowsum

解决方案


对象“计算”不是列名。我们可以将这些对象放入listwithmget中,cbind然后执行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)

推荐阅读