Jedną z najbardziej frustrujących cech R jest trudność w tworzeniu nowych zmiennych ramek danych za pomocą nazw, algorytmicznie i intuicyjnie.Tworzenie nowej nazwanej zmiennej w ramce danych za pomocą konwencji pętli i nazewnictwa
Załóżmy, że mam ramkę danych z niektórymi zmiennymi i chcę utworzyć nowe zmienne na ich podstawie w pętli. Na przykład, chcę tworzyć nowe zmienne, które są skumulowana suma istniejących zmiennych, i nazwał df$var_cumul
temp<-as.data.frame(cbind(seq(0:10),seq(10:20)))
names(temp)<-c("x","y")
for (i in 1:ncol(temp)) {
vname<-names(temp)[i]
assign(paste("temp$",vname,"_cumul",sep=""),cumsum(contrs[,i]))
}
Nie permuation tego Znalazłem prace. Jest to prawdopodobnie jeden z moich największych problemów z R na bieżąco.
Czy istnieje łatwy intuicyjny sposób na zrobienie tego?
trzeba przestudiować stronę pomocy dla "[[" bardziej ostrożnie. Kluczem jest unikanie daremnego wysiłku, aby '$ <-' zrobić coś, czego nie może zrobić. Pomógłby też, gdybyś oduczył się obrzydliwości 'as.data.frame (cind (...))' –
.. również nigdy nie używaj '1: ncol',' 1: nrow' lub '1: length'. .. (nie robi to, co myślisz, a takie przypadki są kłopotliwe w debugowaniu ...) - zamiast tego chcesz użyć 'seq_len()' i znajomych. –
Z drugim punktem DWina, wierzę, że odnosi się on do faktu, że 'data.frame (x = 1:11, y = 1:11)' jest (między innymi) o wiele mniej pisaniem. Z poważaniem zalecałbym grę z efektami takimi jak 'seq (10:20)', ponieważ to też jest okropne. (Czytanie '? Seq' byłoby dobrym początkiem.) – joran