Dplyr kullanarak bir iç birleştirme iki tabloyu gerçekleştirmeye çalışıyorum ve standart dışı değerlendirme kurallarına göre hızlandırıldığımı düşünüyorum. By = ("a" = "b") argümanını kullanırken, "a" ve "b" gerçek dizeler olduğunda her şey beklendiği gibi çalışır.Dplyr, = (a = b) 'ye katılıyor, burada a ve b dizeleri içeren değişkenler var mı?
library(dplyr)
data(iris)
inner_join(iris, iris, by=c("Sepal.Length" = "Sepal.Width"))
Ama ben bir işlevi inner_join koyuyordum diyelim:
Error: cannot join on columns 'xname' x 'Sepal.Width': index out of bounds
Ben orada şüpheli:
library(dplyr)
data(iris)
myfn <- function(xname, yname) {
data(iris)
inner_join(iris, iris, by=c(xname = yname))
}
myfn("Sepal.Length", "Sepal.Width")
Bu, aşağıdaki hata döndürür Burada çalışan bir oyuncak örneği Bu işi yapmak için yapabileceğim süslü bir ifade, ötekileştirme, alıntılama ya da unquote, ama bu detaylarda birazcık karışıkım. Her iki bu değerler uygun karakter değerleri olmadıklarından
Hadley bu [ "standart dışı değerlendirmeyi çağırır:
Bu şekilde size ile istediğinizi yapabilirsiniz "] (http://adv-r.had.co.nz/Computing-on-the-language.html) (NSE) – smci
" by.x "ve" by.y "yi teslim etmek için çok fazla NSE görünmüyor sütun adları farklı bir şekilde. 'By'-argümanı' c ("Sepal.Length" = "Sepal.Width") olur ve '' birleştirme '' by.x' argümanı gerçek bir R ismi olur. Aslında, onu gördüğümde NSE'nin neredeyse tam tersi. –