Мне нужно суммировать последовательности, сгенерированные одним из столбцов. Я сделал это так:
test <- tibble::tibble(
x = c(1,2,3)
)
test %>% dplyr::mutate(., s = plyr::aaply(x, .margins = 1, .fun = function(x_i){sum(seq(x_i))}))
Есть ли более чистый способ сделать это? Есть ли какие-то вспомогательные функции, конструкция которых позволяет мне уменьшить это:
plyr::aaply(x, .margins = 1, .fun = function(x_i){sum(seq(x_i))})
Я ищу общее решение, здесь sum и seq - только пример. Может быть, настоящая проблема в том, что я хочу выполнить функцию на элементе, а не на всем векторе.
Это мой реальный случай:
test <- tibble::tibble(
x = c(1,2,3),
y = c(0.5,1,1.5)
)
d <- c(1.23, 0.99, 2.18)
test %>% mutate(., s = (function(x, y) {
dn <- dnorm(x = d, mean = x, sd = y)
s <- sum(dn)
s
})(x,y))
test %>% plyr::ddply(., c("x","y"), .fun = function(row) {
dn <- dnorm(x = d, mean = row$x, sd = row$y)
s <- sum(dn)
s
})
Я бы хотел сделать это с помощью функции преобразования в ряд, а не векторизованным способом.