новичок в р! Я хотел бы создать переменную (newvar) в моем df, который основан на значениях других переменных в моем df (x, y, z). внешний файл (exfile) имеет 4 столбца со всеми возможными комбинациями x, y и z в первых 3 столбцах, а 4-й столбец (ответ) имеет значение, которое я хотел бы, чтобы newvar был. я мог бы сделать это вручную, используя mutate () + case_when () и перечислить все комбинации, однако существует много разных комбинаций, поэтому я решил написать простую функцию.
exfile выглядит следующим образом:
exfile image здесь
foo <- function (x, y, z) {
exfile <- read.csv("exfile.csv")
exfile %>% filter (x==x, y==y, z==z) %>%
select (answer) %>% as.numeric (.) -> x
return (x)
}
это прекрасно работает, если я просто ввожу числа, но когда я использую его с my df:
df %>%
mutate (newvar = foo(x, y, z))-> df
проблема в том, что я не могу передать векторы в filter (), поэтому я получаю сообщение об ошибке: большая длина объекта не кратна короткой длине объекта.
опять же, существует много разных комбинаций, поэтому было бы невозможно выполнить несколько функций if () в функции ...
что мне делать?
спасибо!
edit: я пытался сделать% in% вместо ==, и вместо этого получаю это сообщение об ошибке: Ошибка в function_list [k]: (список) объект не может быть приведен к типу 'double'
update: inner_join () - это решение проблемы! спасибо всем!