Мне посчастливилось векторизовать некоторые функции, что отлично подходит для чистого кода, избегая циклов и скорости.
Однако я не смог векторизовать какую-либо функцию, которая поднаходит подкадр данных на основевходные данные для функции
Пример
Например, эта функция хорошо работает, когда она получает элементы
test_funct <- function(sep_wid, sep_len) {
iris %>% filter(Sepal.Width > sep_wid & Sepal.Length < sep_len) %>% .$Petal.Width %>% sum
}
test_funct(4, 6)
# [1] 0.7 # This works nicely
Но при попытке предоставить векторы в качестве входных данных для этой функции:
sep_wid_vector <- c(4, 3.5, 3)
sep_len_vector <- c(6, 6, 6.5)
test_funct(sep_wid_vector, sep_len_vector)
[1] 9.1
Но желаемый результат - это вектор такой же длины, что и входные векторы, как если бы функция выполнялась для первых элементов каждого вектора, затем для второго, а затем для третьего.то есть
# 0.7 4.2 28.5
Для удобства, здесь выведите, как если бы они все выполнялись отдельно
test_funct(4, 6) # 0.7
test_funct(3.5, 6) # 4.2
test_funct(3, 6.5) # 28.5
Как я могу векторизовать функцию, которая подгруппирует данные на основе своих входов, чтобы она могла получать векторвходы?