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
相关产品推荐
相关产品推荐

