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

R语言如何用substr、nchar实现提取字符串向量末尾n个字符的函数

问题解决

错误原因

  • 原代码错误提取了向量前n个元素计算长度,没有对每个字符串单独计算自身长度
  • 起始位置计算逻辑错误:要取最后n个字符,起始位应该是当前字符串长度 - n + 1,结束位直接用当前字符串长度即可。substr和nchar都是原生向量化函数,无需循环就可以对整个向量批量处理。

正确实现代码

finales <- function(v, n){
  res <- substr(v, nchar(v) - n + 1, nchar(v))
  return(res)
}

测试验证

直接用提供的测试用例验证即可:

prueba = c("Esto", "es", "un", "vector", "de", "cadenas", "de", "caracteres")
# 提取每个单词最后3个字母存入final.test
final.test <- finales(prueba, 3)

# 测试长度是否匹配
length(final.test) == length(prueba)
# 输出: TRUE

# 测试内容是否匹配
all(final.test == c('sto', 'es', 'un','tor','de','nas','de','res'))
# 输出: TRUE

内容的提问来源于stack exchange,提问作者Abel Pérez

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 05:15:05