2012-10-21 15 views
17

Jestem nowy w języku R i wciąż muszę się wiele nauczyć. Mam listę W elementów J i chciałbym zmienić jej elementy W[[i]] z Wi, czyli W[[1]] z W1 i tak dalej, za pomocą pętli. Jak mogę zrobić?Jak zmienić nazwę listy elementów indeksowanych przez pętlę w R

+0

Czy masz na myśli „Chciałbym stworzyć J nowych list, z elementami z W, z nowymi nazwami, jak wskazano” czy masz na myśli „Pragnę dodać nazwy W1, W2 itp. do aktualnych elementów listy "? Zauważ, że drugi nie zmieni sposobu, w jaki odnosisz się do elementów listy, po prostu doda kilka sposobów, którymi możesz się do nich odnieść. –

Odpowiedz

17
names(W) <- paste0("W", seq_along(W)) 

powinien załatwić sprawę.

Należy zauważyć, że paste0 został wprowadzony w wersji 2.15 jako "nieznacznie bardziej efektywna" wersja paste(..., sep = "", collapse). Jeśli używasz starszej wersji R, można osiągnąć to samo za pomocą paste:

names(W) <- paste("W", seq_along(W), sep = "") 
+0

R mówi, że nie może znaleźć funkcji "paste0" .. – zaire90

+0

@ zaire90 Zobacz aktualizację mojej odpowiedzi. –

+0

OK dzięki Sven, nie widziałem aktualizacji, teraz to jest praca .... – zaire90

11

Alternatywnie można użyć sprintf():

w<-list(a="give",b="me an",c="example") 
names(w)<-sprintf("W%i",1:length(w)) 

Jak widać, nie trzeba pętlę dla to.

Powinien wykonać to zadanie. W tym przykładzie nazwy są W1, W2 i W3

print(w) 
$W1 
[1] "give" 

$W2 
[1] "me an" 

$W3 
[1] "example" 
+0

dzięki Quentin! – zaire90