Переупорядочить строку в 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