使用splitstring对R中的字符串重新排序

时间:2015-07-24 05:19:30

标签: r text strsplit

我无法弄清楚我做错了什么。我正在尝试对字符串进行重新排序,而我能想到的最简单方法是删除元素,然后使用粘贴将它们重新放入。但我无法弄清楚如何删除元素。这是一个字符串:

x <- "the.cow.goes.moo"

但是当我使用

x <- strsplit(x, '[.]')

导致列表“the”“cow”“go”“moo”。 并尝试使用

删除第二个元素
x <- x[-2]

[x <- x[x != "cow"]

我得到完全相同的列表。当我宣布x为

时,
x <- list("the", "cow", "goes", "moo")

然后

x <- x[-2]

作品!

有什么不同?我究竟做错了什么?此外,是否有更简单的方法来重新排序字符串?

编辑:我刚刚意识到我需要的是“moo.goes.the.cow”,但是我需要为其他一些字符串重复同样的更改。所以我需要重新排序元素,实际上不能删除它们。我怎么能这样做?

2 个答案:

答案 0 :(得分:1)

strsplit会返回list个对象。因此,向量x的每个元素现在将被分解为list中的个体片段。列表以这种方式分配可能会很痛苦,但要及早了解它是件好事。

在您的示例中,它将是:

x[[1]][-2]

对于您的更新,您可以像这样重新排序:

x[[1]][c(2,1,3,4)] # or whatever order you want.
x[[1]][sample(1:x[[1]],length(x[[1]]))] # randomly even

答案 1 :(得分:0)

添加此行

x<-unlist(x)
x <- x[-2]