【发布时间】:2023-03-12 12:29:01
【问题描述】:
我有一个包含 29 个数据框的列表。
我正在尝试用ifelse() 做一个简单的转换,看起来像这样:
with(df, ifelse(col1 > x, col1 <- col1-y, col1<-col1+y))
我似乎无法理解的一件事是如何更改 x 和 y 值,以便为列表中的每个数据框使用不同的值。
这是我到目前为止所获得的快速可复制示例 .. 但我想从数据框(例如 info)中调用不同的 x 和 y 值
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)) })
感谢所有帮助/见解!
已编辑以添加说明:
我希望行与列表匹配。
例如Info (x=8.5, y=1) 中的第 1 行在函数中使用并仅应用于列表中的第一个数据帧 (df.1)。
【问题讨论】: