Bir data.frame, yani belirli koşulları karşılayan satırları ayıklamak gerektiğinde, ben subsetiş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
subsetyukarıdaki ifadenin ne yaptığını söyleyebilirdi .Sütunlar
selectifadede değişkenler olarak adlandırılabildiğinden , birkaç tuş vuruşunu kaydedebilirim. Yukarıdaki örneğimde, yalnızca birairqualitykezsubset, ancak üç kez yazmak zorunda kaldım[.
Bu yüzden mutlu oluyordum, subsether 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ı. subsetBelgeleri 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::filteriç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, ])