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

基于字符长度的数据框字符串处理及apply函数报错解决

问题解决:向量处理时apply报错的修复及字符串转换优化

错误原因

sample$RiskCode是一维向量,而apply()仅适用于具备二维及以上维度的对象(如矩阵、数据框)。向量没有维度属性(dim(sample$RiskCode)返回NULL),因此调用apply()会触发dim(X) must have a positive length错误。

解决方案

方案1:用sapply()替代apply()

sapply()专门用于向量/列表的逐元素处理,直接替换即可:

# 生成新列
sample$RiskCode2 <- sapply(sample$RiskCode, icd_transform)

方案2:优化为向量化函数(更高效)

原函数是逐元素判断逻辑,可改用ifelse()嵌套实现向量化操作,避免循环类函数,运行效率更高:

icd_transform_vec <- function(x) {
  ifelse(nchar(x) > 6, substr(x, 1, 6),
         ifelse(nchar(x) == 5, paste0(x, "0"),
                ifelse(nchar(x) == 3, paste0(x, ".00"), x)))
}

# 直接调用生成新列
sample$RiskCode2 <- icd_transform_vec(sample$RiskCode)

验证结果

运行上述任意方案后,sample表结果如下:

RiskCodeRiskCode2
A01A01.00
A02.999A02.99

内容的提问来源于stack exchange,提问作者Dhestar Bagus Wirawan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 21:32:04