使用 splitstring 在 R 中重新排序字符串
Reorder a string in R using splitstring
我不知道我做错了什么。我正在尝试重新排序一个字符串,我能想到的最简单的方法是删除元素,然后使用 paste 将它们放回原处。但我不知道如何删除元素。这是一个字符串:
x <- "the.cow.goes.moo"
但是当我使用
x <- strsplit(x, '[.]')
结果列表 "the" "cow" "goes" "moo"。
并尝试使用
删除第二个元素
x <- x[-2]
或
[x <- x[x != "cow"]
我得到了完全相同的列表。 但是 当我将 x 声明为
x <- list("the", "cow", "goes", "moo")
然后
x <- x[-2]
有效!
有什么不同?我究竟做错了什么?另外,有没有更简单的方法来重新排序字符串?
编辑:我刚刚意识到我需要的是 "moo.goes.the.cow",但我需要对许多其他字符串重复同样的更改。所以我需要重新排序元素,实际上不能删除它们。我该怎么做?
strsplit
returns 一个 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
添加这一行
x<-unlist(x)
x <- x[-2]
我不知道我做错了什么。我正在尝试重新排序一个字符串,我能想到的最简单的方法是删除元素,然后使用 paste 将它们放回原处。但我不知道如何删除元素。这是一个字符串:
x <- "the.cow.goes.moo"
但是当我使用
x <- strsplit(x, '[.]')
结果列表 "the" "cow" "goes" "moo"。 并尝试使用
删除第二个元素x <- x[-2]
或
[x <- x[x != "cow"]
我得到了完全相同的列表。 但是 当我将 x 声明为
x <- list("the", "cow", "goes", "moo")
然后
x <- x[-2]
有效!
有什么不同?我究竟做错了什么?另外,有没有更简单的方法来重新排序字符串?
编辑:我刚刚意识到我需要的是 "moo.goes.the.cow",但我需要对许多其他字符串重复同样的更改。所以我需要重新排序元素,实际上不能删除它们。我该怎么做?
strsplit
returns 一个 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
添加这一行
x<-unlist(x)
x <- x[-2]