r - 在 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)
解决方案
对象“计算”不是列名。我们可以将这些对象放入list
withmget
中,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)
推荐阅读
- javascript - 是否有任何解决方案可以显示从弹出窗口到选择字段的选定记录
- javascript - 如何在 JavaScript 中访问 HTML INPUT?
- macos - 在 MacOS 中从 C 调用 BLAS
- python - 从字典运行 GPIO 命令
- sql-server - 自动转义传递给 sqlcmd 的参数值的特殊字符
- python - 访问第一个元素后无法通过循环中的 xpaths 访问其余元素-Webscraping Selenium Python
- visual-studio - 无法导航以查看根目录中的文件夹以在 Sitecore 9 中保存布局
- google-api-nodejs-client - Google 语音转文本 api 延迟问题
- docker - 运行时将值从 dockerfile 传递给 json 文件
- android - 带有 RxJava 的 Firebase - 没有数据