'daki standart değerlendirmeyi anlama lazyeval::interp
kullanarak Non-standard evaluation vignette'da önerildiği gibi sabitleri ve aktarılan değişken adlarını karıştırmaya çalışıyorum. Ben karakter vektör ("(Weird) Variable name"
) tembel değerlendirmenin sonucunu atamışR: mutate_
# create sample dataset
df_foo = data_frame(
`(Weird) Variable name` = 100,
group_var = sample(c("Yes", "No"), size = 100, replace = TRUE)
)
# function to update the value of weirdly named variable
update_var_1 = function(var_name) {
df_foo %>%
mutate_(
"(Weird) Variable name" =
interp(quote(ifelse(group_var_val == "Yes", var_name_val/10, var_name_val/20)),
group_var_val = as.name("group_var"),
var_name_val = as.name(var_name))
)
}
# test the function
update_var_1("(Weird) Variable name") %>%
head(n = 20)
Not: Burada
ne istiyorum yaptığı bir örnektir. Ancak, tembel değerlendirme sonucunu"var_name"
adlı bir hazırlığa atanan 'a atadığımda. Birisi bu davranışı anlamaya yardımcı olabilir mi?
# function to update the value of weirdly named variable
update_var_2 = function(var_name) {
df_foo %>%
mutate_(
var_name =
interp(quote(ifelse(group_var_val == "Yes", var_name_val/10, var_name_val/20)),
group_var_val = as.name("group_var"),
var_name_val = as.name(var_name))
)
}
# test the function
update_var_2("(Weird) Variable name") %>%
head(n = 20)
İki işlevde aynı sonuçlar bulunmuyor mu? Doğrudan herhangi R fonksiyonunu çağırırken