You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R运行cbind计算PV时报Error in FUN(left, right)错误如何解决

R代码cbind操作报错排查

报错原因

你执行df1$DR1 - x减法运算时,x中包含字符类型列:
你定义的df1里DR012、DR013、DR014三列存在空字符串"",R读取这类混合了字符和数值的列时会统一转为字符型,数值和字符无法直接做算术运算,因此触发non-numeric argument to binary operator报错。

修复方法

先将所有DR0开头的列转为数值型,空字符串会自动转为NA,也可以根据需求替换为0,再执行后续计算即可。

可运行的修复后代码

library(dplyr)
library(tidyverse)
library(lubridate)

df1 <- structure(
  list(date1= c("2021-06-28","2021-06-28","2021-06-28","2021-06-28"),
       date2 = c("2021-06-30","2021-07-01","2021-07-02","2021-07-02"),
       Code = c("FDE","ABC","ABC","FDE"),
       Week= c("Wednesday","Wednesday","Friday","Friday"),
       DR1 = c(4,1,4,1),
       DR01 = c(4,1,4,2), DR02= c(4,2,6,2),DR03= c(9,5,4,2),
       DR04 = c(5,4,3,3),DR05 = c(5,4,5,2),
       DR06 = c(2,4,3,3),DR07 = c(2,5,4,2),
       DR08 = c(0,0,0,4),DR09 = c(0,0,0,2),DR010 = c(0,0,0,2),DR011 = c(4,0,0,2), 
       DR012 = c(0,0,0,""), DR013 = c(0,0,1,""), DR014 = c(0,0,0,"")),
  class = "data.frame", row.names = c(NA, -4L))

# 新增步骤:将所有DR0开头的列转为数值型,空字符串自动转为NA
x<-df1 %>% select(starts_with("DR0")) %>% mutate(across(everything(), as.numeric))
# 如果需要把空值替换为0,用这行替换上一行:
# x<-df1 %>% select(starts_with("DR0")) %>% mutate(across(everything(), ~as.numeric(replace(.x, .x=="", 0))))

x<-cbind(df1, setNames(df1$DR1 - x, paste0(names(x), "_PV")))

PV<-select(x, date2,Week, Code, DR1, ends_with("PV"))

内容的提问来源于stack exchange,提问作者user17163779

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 04:09:01