Bulmaca bir ifade olarak değerlendirilir bir R fonksiyonu yazmak için: BenceR cognoscenti için bir veri-çerçeve içinde
with(df, a)
gibi şeyler yapabileceğini biliyorum
df <- data.frame(a = 1:5, b = 1:5)
: Biz bir veri dilimi var ki Sonuçların bir vektörünü almak için
.
Ancak, bir ifadeyi (a
veya a > 3
gibi) alan ve içinde aynı şeyi yapan bir işlevi nasıl yazarım. Yani Veri çerçevesini ve ifadeyi argüman olarak alan ve veri çerçevesi içindeki ifadeyi "çevre" olarak değerlendirmenin sonucunu döndüren bir işlev fn
yazmak istiyorum.
Bu durumun sesler çıkardığını unutmayın (sadece with
'u yukarıdaki gibi kullanabilirim), ancak bu, yazdığım daha karmaşık bir işlevin basitleştirilmiş bir sürümüdür. Çeşitli varyantları denedim (eval
, with
, envir
, substitute
, local
, vs) ancak bunların hiçbiri çalışmaz. Mesela ben şöyle fn
tanımlarsanız: ortamları ve değerlendirme konusunda ince
> fn(df, a)
Error in eval(expr, envir = dat) : object 'a' not found
Açıkçası ben eksik bir şey:
fn <- function(dat, expr) {
eval(expr, envir = dat)
}
bu hatayı alıyorum. Böyle bir işlevi tanımlamanın bir yolu var mı?
'u kullanarak [Hadley's bu konuyla ilgili wiki] bölümünde bir bölüm var (https: // github.com/hadley/devtools/wiki/Değerlendirme) – Marek
@Marek okumak için harika bir referans, teşekkürler! –
Bu sayfa hala erişilebilir mi? –