Bir data.frame, yani belirli koşulları karşılayan satırları ayıklamak gerektiğinde, ben subset
işlevi kullanmayı tercih :
subset(airquality, Month == 8 & Temp > 90)
[
Fonksiyondan ziyade :
airquality[airquality$Month == 8 & airquality$Temp > 90, ]
Tercihimin iki ana nedeni var:
Kodun soldan sağa doğru daha iyi okunduğunu görüyorum. R hakkında hiçbir şey bilmeyen insanlar bile
subset
yukarıdaki ifadenin ne yaptığını söyleyebilirdi .Sütunlar
select
ifadede değişkenler olarak adlandırılabildiğinden , birkaç tuş vuruşunu kaydedebilirim. Yukarıdaki örneğimde, yalnızca birairquality
kezsubset
, ancak üç kez yazmak zorunda kaldım[
.
Bu yüzden mutlu oluyordum, subset
her yerde kullanıyordum çünkü daha kısa ve daha iyi okuyor, hatta R kodlayıcılarıma güzelliğini savundu. Ama dün dünyam parçalandı. subset
Belgeleri okurken bu bölüme dikkat ediyorum:
Uyarı
Bu, etkileşimli olarak kullanılması amaçlanan bir kolaylık işlevidir. Programlama için, [gibi standart alt kümeleme işlevlerini kullanmak daha iyidir ve özellikle bağımsız değişken alt kümesinin standart dışı değerlendirmesinin beklenmedik sonuçları olabilir.
Birisi yazarların ne anlama geldiğini açıklığa kavuşturabilir mi?
İlk olarak, " etkileşimli kullanım için " ne anlama geliyorlar ? BATCH modunda çalıştırılan bir komut dosyasının aksine etkileşimli bir oturumun ne olduğunu biliyorum, ancak ne fark etmesi gerektiğini anlamıyorum.
O zaman, lütfen “ argüman alt kümesinin standart dışı değerlendirmesini ” ve neden tehlikeli olduğunu açıklayabilir misiniz , belki bir örnek verebilir misiniz ?
dplyr::filter
için de aynı problem var. Yani, ortamın bu ada sahip bir değişkeni varsa, veri çerçevesindeki değişken yerine onu kullanır. Hata ayıklamayı karıştırır!
with(airquality, airquality[Month == 8 & Temp > 90, ])