Ne yapmak istediğinize bağlıdır. Yukarıdaki print
örneğinizin örnek olarak yaptığınız bir şey olduğunu, ancak yazdırmadan daha fazlasını yapmak istediğinizi varsayalım!
Bir ortamın her öğesine dayalı bir nesne almak istiyorsanız, eapply(env, function)
kullanın. Diğer *apply()
işlevleri gibi çalışır. Nesneleri, eapply()
'a iletilen ve adlarının çevreden kopyalandığı işlevden oluşturduğunuz nesneler olan bir liste döndürür. Özel durumda
map <- new.env(hash=T, parent=emptyenv())
assign('a', 1, map)
assign('b', 2, map)
eapply(map, identity)
Örneğin
, iki elemanlarının bir listesini döndürür. Bir karma tabloyu bir ortam yerine bir liste olarak uygulayabileceğinizi gösteren bir hash tablosuna çok benziyor (biraz alışılmışın dışında, ama kesinlikle ilginç). bunun yerine bir ortamın elemanların her biri için şey yapmak istiyorsanız bu bazı önemsiz olmayan, özel fonksiyon için nasıl çalışacağını görmek için
, burada dönmeden, örnek
eapply(map, function(e) {
# e here stands for a copy of an element of the environment
e <- my.function(e)
my.other.function(e)
})
olduğunu Sonunda bir liste nesnesi, @DWin gibi bir for döngüsü kullanmalısınız.
Endişelenmem, gerçekten sadece yazdırmak istemeyeceğiniz, ancak sonunda "hash tablosu" öğelerinize dayalı nesneler oluşturacağınız ve daha sonra işlenecek bir listeye geri göndereceğinizdir. Bu durumda, eapply()
'u kullanmalısınız. Kod daha temiz olacak ve R'nin deyimine daha yakın olacak. Yinelenen ve sizin için sonuçların listesini oluşturmaya özen gösterir.
'ls', isimleri değil nesneleri döndürür. Yazdırmayı deneyin (harita [[v]] ' –