У меня есть список из 5 кадров данных, например:
mydf <- data.frame(x=c(1:5), y=c(21:25),z=rnorm(1:5), p=rnorm(2:6), f=rnorm(3:7))
mylist <- rep(list(mydf),5)
names(mylist) <-c("2006-01-01","2006-01-02","2006-01-03","2006-01-04","2006-01-05")
У меня также есть трехэтапная формула и следующие фрагменты кода, которые я собрал:
Шаг 1 - код для этого выглядит следующим образом, его необходимо рассчитать для каждой строки одного и того же столбца. если x является элементом "z", "f" или "p", то:
z = x - mean(column))/sd(column)
2 - перемасштабировать z-значения с 0, используя значения из шага 1.
rz = abs(min(z)) + z
3 - Перемасштабируйте оценки RZ с шага 2 так, чтобы они находились между 0 и 1.
mrz = rz/max(rz)
Мне нужно применить эту формулу только к столбцам "z", "p", "f", а также objective_col <- colnames(mylist$'2006-01-05'[,3:5])
к каждому элементу mylist
, используя apply
, sapply
, lapply
или другой тип цикла:
это, вероятно, будет выглядеть примерно так:
lapply(mylist, FUN = function(x) .......)
Выходные данные должны быть в том же макете и формате, что и mydf
, и все они хранятся в mylist2 <- list()
.
Я буду продолжать обновлять это, поскольку я делаю больше прогресса. Я все еще учусь использовать циклы и функции. Спасибо всем, кто может внести свой вклад.