2013-07-16 14 views
7

Wśród kilku innych mniej istotnych, sprawdziłem te dwie odpowiedzi:
Answer 1
Answer 2
Jak usunąć element z listy ciągów w R

Jednak rozwiązania przedstawiane nie pomogło.

Prawdopodobnie nie rozumiem mojego własnego problemu i staram się postępować właściwie w niewłaściwy sposób. Doceniam każdą pomoc.

Mam następujący kod gdzie budować listę ciągów i spróbuj usunąć drugi element listy:

> 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 

Więc moje pytanie brzmi: w jaki sposób mogę usunąć drugi element (lub wielokrotność elementy, takie jak 1 i 3) z my_list? Elementy my_list nie są nazwane, chcę uzyskać do nich dostęp za pomocą indeksu liczbowego.

+5

'mylist [[1]] <- mylist [[1]] [- 2]'. Sugerowałbym czytanie trochę po drodze podzestawy i listy działają w R. – Justin

+2

Wiadomość Take-home: Użyj podzbioru zamiast przypisywania 'NULL'. – Roland

+0

Dziękuję bardzo Justin (i Roland). Używanie linii pokazanej z zasięgiem zamiast ujemnego indeksu doskonale sprawdza się w moich celach. Próbowałem usunąć elementy z konstrukcją "<- NULL", ale to nie działa. Podział, a następnie nadpisanie listy działa idealnie, a wynik jest taki sam. Sądzę więc, że nie mogę po prostu usunąć elementów, ale raczej trzeba je podsegmentować i zastąpić mniejszą listą. – bomgaroto

Odpowiedz

2

Nie jestem pewien, czy zamierzałeś stworzyć listę wektorów z kodem; może być łatwiej po prostu użyć wektora znaków. Spróbuj najpierw użyć opcji unlist:

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

my_list <- my_list[-2] 
+0

Ah, okay. Niż odpowiedź @ Justina jest najlepsza. –

+0

Twoja odpowiedź działa dobrze, ale muszę ponownie użyć list() w drugiej linii, w przeciwnym razie otrzymam coś, co nie jest listą. Jednak opcja podzbioru przedstawiona przez Justina i Rolanda wpadła mi w oko. Przyjąłem twoją odpowiedź, ponieważ dodały tylko komentarze. – bomgaroto

+0

Tak, przepraszam - przepraszam za zamieszanie! Ale znowu brzmi to jak rozwiązanie @ Justina zadbało o twoje potrzeby. –

Powiązane problemy