Я пытаюсь выполнить внутреннее объединение двух таблиц с использованием dplyr, и я думаю, что меня нарушают нестандартные правила оценки. При использовании аргумента by = ( "a" = "b" ) все работает так, как ожидалось, когда "a" и "b" являются фактическими строками. Здесь показан пример с игрушкой:
library(dplyr)
data(iris)
inner_join(iris, iris, by=c("Sepal.Length" = "Sepal.Width"))
Но скажем, я помещал функцию inner_join в функцию:
library(dplyr)
data(iris)
myfn <- function(xname, yname) {
data(iris)
inner_join(iris, iris, by=c(xname = yname))
}
myfn("Sepal.Length", "Sepal.Width")
Это возвращает следующую ошибку:
Error: cannot join on columns 'xname' x 'Sepal.Width': index out of bounds
Я подозреваю, что есть какое-то причудливое выражение, deparsing, quoting или unquoting, что я мог бы сделать, чтобы сделать эту работу, но я немного мрачен в этих деталях.