У меня есть список с 29 кадрами данных. Я пытаюсь сделать простое преобразование с ifelse()
, которое выглядит примерно так: with(df, ifelse(col1 > x, col1 <- col1-y, col1<-col1+y))
Единственное, чего я не могу получить, так это как это изменить x
и y
значение, так что для каждого кадра данных в списке используется другое значение.
Вот быстрый воспроизводимый пример того, что я получил до сих пор ... но я хочу вызвать различные значения для x и y из фрейма данных (например, info)
df.1 <- data.frame("df"=rep(c(1), times=4),"length"=c(10:7))
df.2 <- data.frame("df"=rep(c(2),times=4),"length"=c(8:11))
df.3 <- data.frame("df"=rep(c(3),times=4),"length"=c(9:12))
list <- list(df.1,df.2,df.3)
info <- data.frame(x=rep(c(8.5,9.5,10.5)), y=rep(c(1,1.5,2)))
# using static number for x & y but wanting these to be grabbed from the above df and change
# for each list
x <- 8
y <- 1
lapply(list, function(df) {
df <- with(df, ifelse(length > x,
length <- length-y,
length <- length+y)) })
Any и вся помощь / понимание приветствуется!
Отредактировано для добавления пояснения:
Я бы хотел, чтобы строки совпали со списками.
Например, строка 1 в Info (x = 8,5, y = 1) используется в функции и применяется только к первому фрейму данных в списке (df.1).