在R语言中不使用strsplit,仅用基础函数能否访问字符串字符?
不用strsplit访问R字符串单个字符的方法
假设我们有字符串:
x <- "hello world"
这里提供几种不依赖strsplit()的实现方式:
- 方法一:用substr循环提取
利用substr()可以提取指定位置字符的特性,结合循环遍历每个位置:
# 获取字符串长度 len <- nchar(x) # 逐个提取每个位置的字符 char_vec <- sapply(1:len, function(pos) substr(x, pos, pos))
执行后char_vec就是包含每个单个字符的向量。
- 方法二:通过编码转换拆分
先把字符串转成UTF-8整数编码,再转回字符,这种方法效率很高:
# 转成整数编码,再转回单个字符 char_vec <- intToUtf8(utf8ToInt(x), multiple = TRUE)
utf8ToInt(x)会把每个字符转成对应的整数,intToUtf8(..., multiple = TRUE)则会把每个整数转回单独的字符。
- 方法三:使用stringi包的stri_sub(需额外安装包)
如果可以使用第三方包,stringi的stri_sub()支持批量提取多个位置的字符:
# 先安装包(首次使用) # install.packages("stringi") library(stringi) char_vec <- stri_sub(x, 1:nchar(x), 1:nchar(x))
内容的提问来源于stack exchange,提问作者user321627
相关产品推荐
相关产品推荐

