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

strsplit与lapply结合使用疑问:泰坦尼克数据集称谓提取代码差异

问题解析:两段lapply代码的差异

核心原因:lapply的第二个参数必须是函数

lapply的语法是lapply(X, FUN, ...),其中第二个参数FUN要求是函数类型,不能是普通字符串或数值。


第一段报错代码的问题

lapply(data$Name, strsplit(data$Name, split = "[,.]")[[1]][2])

这段代码里,你先执行了strsplit(data$Name, split = "[,.]")[[1]][2]——这一步是对整个data$Name向量做拆分,然后取第一个名字拆分后的第二个元素,结果是类似" Mr"的字符串。

当把这个字符串传给lapply的第二个参数时,lapply会误以为你要调用一个叫" Mr"的函数,但R中根本不存在这个函数,所以抛出object ' Mr' of mode 'function' was not found的错误。


第二段正常代码的逻辑

lapply(data$Name, function(x)strsplit(x, split = "[,.]")[[1]][2])

这里传给lapply的第二个参数是匿名函数function(x):

  • 每次迭代时,lapply会把data$Name里的单个名字(比如"Braund, Mr. Owen Harris")传给参数x
  • 对这个单独的x执行strsplit拆分,再取拆分后的第二个元素,得到对应的称谓
  • 整个过程是对每个名字单独处理,完全符合lapply的迭代逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 13:55:31