解决R Shiny中integer转data.frame报错及实现列乘积求和问题
错误原因分析与代码修正
错误原因
这个错误的核心是你试图将一个整数类型的标量值(即DF1中“Amount of goods”与“Unit cost of goods”乘积的总和,是单个数字)以错误的方式赋值给DF2的列,R无法将单个整数强制转换为数据框结构,因此抛出该报错。常见触发场景包括:
- 错误地用
as.data.frame()包裹了这个总和值,试图把标量转成数据框后赋值 - 赋值语法错误,导致R误判你要将标量作为数据框处理
修正代码
场景1:DF2已存在,需添加/更新目标列
先计算乘积总和,再根据DF2的行数完成赋值:
# 计算商品可售总成本 total_cost <- sum(DF1$`Amount of goods` * DF1$`Unit cost of goods`) # 如果DF2只有1行,直接赋值 DF2$`Cost of goods available for sale` <- total_cost # 如果DF2有多行,将总和填充到每一行 DF2$`Cost of goods available for sale` <- rep(total_cost, nrow(DF2))
场景2:从头创建DF2
直接用计算得到的总和创建数据框:
total_cost <- sum(DF1$`Amount of goods` * DF1$`Unit cost of goods`) DF2 <- data.frame(`Cost of goods available for sale` = total_cost)
注意:带空格的列名要用反引号(`)包裹,避免R解析时出现语法错误。
内容的提问来源于stack exchange,提问作者firuz.safaev
相关产品推荐
相关产品推荐

