2013-07-16 5 views
7

Среди нескольких менее соответствующих других, я проверил эти два ответа:
Answer 1
Answer 2
Как удалить элемент из списка строк в R

Однако решения представленные там не помогло.

Возможно, я ошибаюсь в своей собственной проблеме и стараюсь делать правильные вещи неправильно. Я ценю любую помощь.

У меня есть следующий код, в котором я строю список строк и попытаться удалить второй элемент списка:

> my_strings <- "string1 string2 string3 string4 string5" 
> my_list <- strsplit(my_strings,split=" ") 
> #Now trying to delete one element from my_list using positive indexing 
> 
> my_list[[2]] <- NULL #does not work 
> my_list[2] <- NULL #nope. Doesn't work either 
> my_list[[1]][2] <- NULL #error: replacement has length zero 
> my_list[[1]][[2]] <- NULL # error: more elements supplied than there are to replace 

Итак, мой вопрос: как я могу удалить второй элемент (или несколько элементы, такие как 1 и 3) my_list? Элементы my_list не называются, я хочу получить к ним доступ с помощью числового индекса.

+5

'mylist [[1]] <- mylist [[1]] [- 2]'. Я бы посоветовал немного почитать о том, как подмножество и списки работают в R. – Justin

+2

Взятие домашнего сообщения: используйте подмножество вместо назначения 'NULL'. – Roland

+0

Большое спасибо Джастину (и Роланду). Использование линии, которую вы показали с диапазоном вместо отрицательного индекса, отлично работает для моих целей. Я пытался удалить элементы с конструкцией «<- NULL», но это не сработает. Подмножество, а затем переписывание списка отлично работает, и результат тот же. Поэтому я предполагаю, что я не могу просто удалить элементы, но мне скорее нужно подмножить список и заменить его на меньший список. – bomgaroto

ответ

2

Я не уверен, что вы намеревались создать список векторов с вашим кодом; может быть проще просто использовать вектор символов. Попробуйте использовать список в первую очередь:

my_list <- unlist(strsplit(my_strings,split=" ")) 

my_list <- my_list[-2] 
+0

А, ладно. Чем лучший ответ Джастина. –

+0

Ваш ответ работает нормально, но мне нужно снова использовать list() во второй строке, иначе я получаю что-то, что не является списком. Однако вариант подмножества, представленный Джастином и Роландом, лучше меня привлек. Я принял ваш ответ, потому что они только добавили комментарии. – bomgaroto

+0

Да, я оговорился - извините за путаницу! Но опять же, похоже, что решение @ Justin позаботилось о ваших потребностях. –

Смежные вопросы