我尝试拆分方法,我想要一个只包含2个元素的字符串的第二个元素。字符串的大小为2。
示例:
string= "AC"
结果应该在第一个字母(“A”)之后拆分,我得到:
res= [,1] [,2]
[1,] "A" "C"
我用split进行了尝试,但我不知道如何在第一个元素之后拆分?
答案 0 :(得分:5)
strsplit()
会做你想要的(如果我理解你的问题)。您需要拆分""
以拆分其元素上的字符串。这是一个示例,说明如何在字符串向量上执行您想要的操作:
strs <- rep("AC", 3) ## your string repeated 3 times
接下来,拆分三个字符串中的每一个
sstrs <- strsplit(strs, "")
产生
> sstrs
[[1]]
[1] "A" "C"
[[2]]
[1] "A" "C"
[[3]]
[1] "A" "C"
这是一个列表,因此我们可以使用lapply()
或sapply()
来处理它。我们需要对sstrs
的每个元素进行子集化以选择第二个元素。我们应用[
函数:
sapply(sstrs, `[`, 2)
产生:
> sapply(sstrs, `[`, 2)
[1] "C" "C" "C"
如果你只有一个字符串,那么
strsplit("AC", "")[[1]][2]
给出:
> strsplit("AC", "")[[1]][2]
[1] "C"
答案 1 :(得分:2)
split
不用于此类字符串操作。你要找的是strsplit
,在你的情况下会使用这样的东西:
strsplit(string,"",fixed = TRUE)
你可能不需要fixed = TRUE
,但这是我的习惯,因为我倾向于避免使用正则表达式。您似乎表明您希望结果类似于矩阵。 strsplit
会返回一个列表,因此您需要这样的内容:
strsplit(string,"",fixed = TRUE)[[1]]
然后将结果传递给matrix
。
答案 2 :(得分:0)
如果您确定它始终是两个字符串(通过all(nchar(x)==2)
检查)并且您只想要第二个,那么您可以使用sub
或substr
:
x <- c("ab", "12")
sub(".", "", x)
# [1] "b" "2"
substr(x, 2, 2)
# [1] "b" "2"