Ben data.frames listesine sahibim.* Fonksiyonların ailesini uygulayan değişikliklerin nasıl kaydedileceği
> LoDFs <- list(data.frame(y1=c(1,2,3), y2=c(4,5,6)), data.frame(yA=c(1,2,3), yB=c(4,5,6)))
> LoDFs
[[1]]
y1 y2
1 1 4
2 2 5
3 3 6
[[2]]
yA yB
1 1 4
2 2 5
3 3 6
Here ayrı ayrı her data.frame işlemek için lapply
fonksiyonunu nasıl kullanılacağını buldum. Amacım, özellikle data.frame'deki sütun adlarını değiştirmektir (her iki data.frames, A
ve ikinci B
adında ilk sütuna sahip olmalıdır). Aşağıdaki denedim:
> col.names <- c("A", "B")
> lapply(seq_along(LoDFs), function(x) {colnames(LoDFs[[x]]) <- col.names})
[[1]]
[1] "A" "B"
[[2]]
[1] "A" "B"
Ama sadece modifikasyon döner ve özellikle data.frame etkilemedi:
> LoDFs
[[1]]
y1 y2
1 1 4
2 2 5
3 3 6
[[2]]
yA yB
1 1 4
2 2 5
3 3 6
Nasıl fonksiyonların aile yaptım uygulamak * değişiklikleri kaydetmek için veri?
[bu] ile aynı sorun (http://stackoverflow.com/questions/36307870/r-function-which-has-a-data-frame-parameter-doesnt-work) aşağı dört sorular? – rawr
@rawr Lütfen bahsettiğim örneği sorunumda değiştirebilir ve cevap olarak gönderebilir misiniz? Bağlantılı soruya/cevaba dayanarak fonksiyondan geri dönüşü denedim: "lapply (seq_along (LoDFs)), function (x) {colnames (LoDFs [[x]]) <- col.names; LoDFs}) beklendiği gibi çalışmadı. –
Doğru fikre sahipsiniz, ancak gecikme, LoDF'lerin bireysel öğeleri üzerinde hareket ettiğinden, her bir yineleme için bu yapıyı geri göndermeniz gerekir. Eğer sadece varsa; LoDFs}) ', her iteration_ için yedek listenin tamamı olacaktır. böylece sadece değiştirilmiş öğeleri döndürmeniz gerekir; LoDFs [[x]]}) ' – rawr