将字符向量拆分为单个字符?(与粘贴或 stringr::str_c 相反)
-
21-12-2019 - |
题
R 中的一个非常基本的问题,但解决方案尚不清楚。
如何将字符向量拆分为单个字符,即的相反 paste(..., sep='')
或者 stringr::str_c()
?
任何比这更不笨重的东西:
sapply(1:26, function(i) { substr("ABCDEFGHIJKLMNOPQRSTUVWXYZ",i,i) } )
"A" "B" "C" "D" "E" "F" "G" "H" "I" "J" "K" "L" "M" "N" "O" "P" "Q" "R" "S" "T" "U" "V" "W" "X" "Y" "Z"
可以用其他方式完成吗,例如和 strsplit()
, stringr::*
或者其他什么?
解决方案
是的, strsplit
会做的。 strsplit
返回一个列表,因此您可以使用 unlist
将字符串强制为单个字符向量,或使用列表索引 [[1]]
访问第一个元素。
x <- paste(LETTERS, collapse = "")
unlist(strsplit(x, split = ""))
# [1] "A" "B" "C" "D" "E" "F" "G" "H" "I" "J" "K" "L" "M" "N" "O" "P" "Q" "R" "S"
#[20] "T" "U" "V" "W" "X" "Y" "Z"
或者(注意实际上没有必要命名 split
争论)
strsplit(x, "")[[1]]
# [1] "A" "B" "C" "D" "E" "F" "G" "H" "I" "J" "K" "L" "M" "N" "O" "P" "Q" "R" "S"
#[20] "T" "U" "V" "W" "X" "Y" "Z"
您还可以拆分 NULL
或者 character(0)
得到相同的结果。
不隶属于 StackOverflow