'lapply arasındaki fark ne.R aradınız?
Son zamanlarda R öğrenme ve iki işlevi tarafından kafam karıştı: lapply
do.call
. Sadece Lisp map
işlevine benzer, onlar gibi görünüyor. Ama neden farklı bir ad ile iki işlevi vardır? Neden R sadece bir fonksiyonu map
adlı kullanmıyor?
CEVAP
Diğer dillerde: göster benzer bir işlev Map
denir
lapply
X, her elemanı X'in karşılık gelen öğe için EĞLENCELİ bir uygulama sonucu olarak aynı uzunlukta bir listesini verirdo.call
bir isim veya bir işlev bağımsız değişken işlev çağrısı geçirilecek yapıları yürütür.Map
geçerli bir işlev için karşılık gelen elemanları verilen vektörler...Map
basit bir sarıcımapply
gelmez girişimi kolaylaştırmak sonucu, benzer Common Lisp var mapcar (bağımsız değişken olmak geri dönüşümlü, ancak). Gelecek sürümleri sonuç tip bazı kontrol izin verebilir.
Map
mapply
etrafında sarıcılapply
mapply
özel bir durum- Bu nedenle
Map
lapply
birçok durumda benzer olacaktır.
Örneğin, burada lapply
:
lapply(iris, class)
$Sepal.Length
[1] "numeric"
$Sepal.Width
[1] "numeric"
$Petal.Length
[1] "numeric"
$Petal.Width
[1] "numeric"
$Species
[1] "factor"
Ve aynı Map
kullanarak:
Map(class, iris)
$Sepal.Length
[1] "numeric"
$Sepal.Width
[1] "numeric"
$Petal.Length
[1] "numeric"
$Petal.Width
[1] "numeric"
$Species
[1] "factor"
do.call
giriş olarak işlev alır ve işlevi için başka argümanlar splatters. Yaygın olarak, örneğin, daha basit yapılar (genellikle rbind
cbind
ile listeleri birleştirmek için kullanılır.
Örneğin:
x <- lapply(iris, class)
do.call(c, x)
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
"numeric" "numeric" "numeric" "numeric" "factor"
İkili ağaç ve ikili arasındaki fark ar...
'libev arasındaki fark ne ve libe...
Android: Parcelable arasındaki Fark ve...
ProcessBuilder ve çalışma Zamanı arası...
E arasındaki fark.hedef ve e.ayrıştırı...