Я выполняю функцию попарно для всех переменных в наборе данных.Например, предположим, что необработанные данные - это 4 переменные с 5 наблюдениями (проиндексированы), а функция - это только разница.Желаемым результатом будет 6 попарных разностей в каждом из 5 наблюдений.
Это достаточно просто для небольшого постоянного набора переменных, но я не знаю, как сделать его масштабируемым.Масштабируемость в идеале означала бы все перечисленное ниже, но для начала я был бы рад получить эффективный код # 1
1) для итерации парного процесса Первичная цель
2) удаление избыточной информации (т. Е. Не нужно вычислять переменную 1-переменную 2, если уже была запущена переменная 2-переменная 1)
3) минимальный ручной труд, такой как присвоение имен переменных
4) самообновление, если изменяется набор, имена или количество переменных
Я пробовал серию циклов while, но это уже громоздко.Я попытался использовать функции apply и purrr / map, но не могу найти способ перебора каждого столбца в качестве входных данных для функции.Я также попытался расширить.grid, но это неправильно, поскольку я пытаюсь запустить функцию для «фактических» индексированных переменных, а не для идентификации комбинаций.
library(purrr)
#define example vectors and generate df
aa=c(1,2,3,4,5)
bb=c(10,20,30,40,50)
cc=c(100,200,300,400,500)
dd=c(5,10,15,20,25)
df=data.frame(cbind(aa,bb,cc,dd))
#define difference function
slope=function(x,y){
slope=y-x
dfslope=as.data.frame(slope)
}
#output
purrrout=map2_dfr(aa,bb,purrrcurve)
purrrout
slope
1 9
2 18
3 27
4 36
5 45
Этот код отлично работает для одной непротиворечивой парыданные, но я не знаю, как расширить его для итерации по парам (bb-aa, cc-aa, dd-aa, cc-bb, dd-bb, dd-cc).
Спасибоза любую помощь и все мысли.