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

如何修复R代码以提取句子中最长的偶长度单词?

修复后的代码及解释

原代码存在逻辑混乱、函数使用错误的问题:

  • 仅获取了偶长度单词的索引,未提取对应单词,也未处理长度排序
  • word函数使用场景错误,嵌套lapply逻辑混乱导致报错

以下是符合需求的修复代码:

library(dplyr)
library(purrr)
library(stringr)

string <- data.frame(string=c('R is a popular programming language', 'python is good')) %>% 
  mutate(string2 = map_chr(string, function(sentence) {
    # 将句子分割为单词向量
    words <- str_split(sentence, "\\s+")[[1]]
    # 筛选出长度为偶数的单词
    even_words <- words[str_length(words) %% 2 == 0]
    # 处理无偶长度单词的情况(可选,返回NA)
    if (length(even_words) == 0) return(NA_character_)
    # 找出最长的偶长度单词,若多个长度相同取第一个
    max_length <- max(str_length(even_words))
    even_words[str_length(even_words) == max_length][1]
  }))

代码说明:

  • 使用str_split分割句子为单词,\\s+匹配任意数量空白符(避免多个空格的情况)
  • 通过str_length(words) %% 2 == 0筛选偶长度单词
  • 计算偶长度单词的最大长度,提取对应单词;若有多个同长单词,取第一个
  • map_chr确保返回字符向量,直接生成string2列

运行后输出与预期一致:

string  string2
1 R is a popular programming language language
2                      python is good   python

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 13:07:06