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

在R中将死亡率转换为概率时遇一元运算符无效参数错误

问题解决:死亡率转概率时出现"invalid argument to unary operator"错误

问题根源

从你提供的数据集结构能看到,Total列的数值是以逗号作为小数点的字符串格式(比如"0,002069453"),而read.csv默认会把这类内容识别为字符型。后续转成矩阵后,v_r_HDage依然是字符向量,无法执行-v_r_HDage这类数值运算,因此触发错误。

解决步骤

1. 读取CSV时正确解析数值

修改read.csv的参数,指定小数点分隔符为逗号,同时关闭自动转因子的默认行为:

Mortality_2021 <- read.csv("C:\\Mortality_table_CSV.csv", sep = ";", dec = ",", stringsAsFactors = FALSE)

2. 提取数值型死亡率向量

无需转成矩阵,直接提取Total列即可得到数值向量:

v_r_mort_by_age <- Mortality_2021$Total
names(v_r_mort_by_age) <- Mortality_2021$Age

3. 后续代码正常执行

提取目标年龄区间的死亡率,再转换为概率:

v_r_HDage  <- v_r_mort_by_age[(n_age_init + 1) + 0:(n_cycles - 1)]
v_p_HDage  <- rate_to_prob(v_r_HDage)
# 或直接用公式:v_p_HDage <- 1 - exp(-v_r_HDage)

验证方法

可以先检查向量类型,确认已转为数值型:

class(v_r_HDage)
# 正常应返回"numeric"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 01:25:31