在R中,如何在不使用分隔符的情况下拆分字符串

时间:2011-08-29 14:09:47

标签: r split

我尝试拆分方法,我想要一个只包含2个元素的字符串的第二个元素。字符串的大小为2。

示例:

string= "AC"

结果应该在第一个字母(“A”)之后拆分,我得到:

res=    [,1] [,2]
     [1,] "A" "C"

我用split进行了尝试,但我不知道如何在第一个元素之后拆分?

3 个答案:

答案 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)检查)并且您只想要第二个,那么您可以使用subsubstr

x <- c("ab", "12")
sub(".", "", x)
# [1] "b" "2"
substr(x, 2, 2)
# [1] "b" "2"