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

使用lapply在数据框列表中新增变量时数据框被误替换的问题

解决数据框列表新增列后仅返回单列的问题

你的代码问题出在函数的返回值上:R中函数默认会返回最后一行代码的执行结果,你原来的函数最后一行是给x[, "PROVINCE"]赋值,这行代码的返回值就是新生成的PROVINCE列,所以lapply会把列表里的每个数据框都替换成这一列。

只需要在函数最后返回修改后的完整数据框即可,两种写法都可以:

写法一:显式用return返回

list.ENAHO_M7 <- lapply(list.ENAHO_M7, function(x) {
  x$PROVINCE <- str_extract(x$UBIGEO, "^\\d{4}")
  return(x)  # 返回完整数据框
})

写法二:直接把数据框放在最后一行(R默认返回最后一行)

list.ENAHO_M7 <- lapply(list.ENAHO_M7, function(x) {
  x$PROVINCE <- str_extract(x$UBIGEO, "^\\d{4}")
  x  # 最后一行返回整个数据框
})

另外,用x$PROVINCE比x[, "PROVINCE"]的写法更简洁,功能完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 18:01:17