Переупорядочить строку в R, используя splitstring

Я не могу понять, что я делаю не так. Я пытаюсь изменить порядок строк, и самый простой способ, которым я мог придумать, это удалить элементы, а затем вернуть их обратно с помощью вставки. Но я не могу понять, как удалить элементы. Вот строка:

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

Но когда я использую

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

в результате в списке "the" "корова" "идет" "moo". И попробуйте удалить второй элемент, используя либо

x <- x[-2]

или же

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

Я получаю точно такой же список. Но когда я объявляю х как

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

затем

x <- x[-2]

работает!

Чем отличается? Что я делаю неправильно? Кроме того, есть ли более простой способ изменить порядок строк?

РЕДАКТИРОВАТЬ: я только что понял, что мне нужно, "moo.goes.the.cow", но мне нужно повторить то же самое изменение для ряда других строк. Поэтому мне нужно изменить порядок элементов, и я не могу их удалить. Как я могу это сделать?

2 ответа

Решение

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

Добавить эту строку

x<-unlist(x)
x <- x[-2]
Другие вопросы по тегам