SORU
13 Mart 2010, CUMARTESİ


İtfa edilmiş, sürekli R listesine bir nesne eklemek?

Eğer bazı R listesi mylist, 5 ** bir öğe gibi ekleyebilirsiniz:

mylist[[length(mylist) 1]] <- obj

Ama kesinlikle daha kompakt bir yol var. R yeni yaşımdayken falan yani lappend() yazmaya çalıştım:

lappend <- function(lst, obj) {
    lst[[length(lst) 1]] <- obj
    return(lst)
}

ama elbette işe yaramazsa nedeniyle R call-by-adı anlambilim (lst etkili kopyalanan çağırıyoruz, böylece değişiklikler için lst görünmez kapsamı dışında kalan lappend(). R bir fonksiyon içinde fonksiyon kapsamı dışında ulaşmak için hack yapmak ve çağıran çevre mutasyona olabilir biliyorum, ama bu ekleme basit bir fonksiyon yazmak için büyük bir çekiç gibi görünüyor.

Kimse bunu yapmanın daha güzel bir yol önerir misiniz? Bonus eğer iki vektör ve listeler için işe yararsa puan.

CEVAP
13 Mart 2010, CUMARTESİ


Sadece kullanın c() fonksiyon :

R> LL <- list(a="tom", b="dick")
R> c(LL, c="harry")
$a
[1] "tom"

$b
[1] "dick"

$c
[1] "harry"

R> class(LL)
[1] "list"
R> 

Bu vektörler üzerinde çok çalışıyor, o kadar bonus puan kazanacak mıyım?

Düzenle (2015-Şub-01):Bu yazı beşinci doğum günü yaklaşıyor. Okuyucular ile herhangi bir eksiklik, yani tarafından tekrarlamaya devam et falan da Aşağıda bazı yorumlar görüyorum. list türleri için bir öneri:

newlist <- list(oldlist, list(someobj))

Genel olarak, R tipleri zor bir ve tüm türleri ve kullanım alanları için sadece bir deyim var.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:
R

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • ☆ SUB4SUB CENTER! ☆ spam here

    ☆ SUB4SUB

    22 ŞUBAT 2010
  • Greater Than Gatsby Photoshop Actions & Lightroom Presets

    Greater Than

    11 ŞUBAT 2013
  • Drakinen

    Drakinen

    1 EYLÜL 2008