Я хотел бы запустить функцию, чтобы проверить, существует ли значение в наборе данных или нет. Я искал ответы и с тех пор нашел обходной путь, но он не такой аккуратный, и мне любопытно, почему моя первоначальная попытка не удалась.
Вот упрощенный набор данных
df <- structure(list(country = structure(c(1L, 1L, 1L, 2L, 2L, 2L), .Label = c("IRE","USA"),
class = "factor"), year = structure(c(1L, 2L, 3L, 1L, 2L, 3L), .Label = c("1990", "1995", "2000"),
class = "factor")), class = "data.frame", row.names = c(NA, -6L))
> df
country year
1 IRE 1990
2 IRE 1995
3 IRE 2000
4 USA 1990
5 USA 1995
6 USA 2000
Я хотел бы, чтобы мой функция для возврата 1
, если присутствуют конкретный код страны и год, или 0
в противном случае. Это рабочий код:
myFunc <- function(x,y){
p.ans <- df %>% filter(year == y)
ifelse(x %in% p.ans$country, 1, 0)
}
> myFunc("USA", 1995)
[1] 1
> myFunc("USA", 1997)
[1] 0
Но почему этот альтернативный код не работает? Есть ли вариант этого, который будет?
myFunc <- function(x,y){
df %>% filter(year == y) %>% ifelse(x %in% country, 1, 0)
}
> myFunc("USA", 1997)
Error in ifelse(., x %in% country, 1, 0) : unused argument (0)
Спасибо!