【发布时间】:2017-11-15 07:16:43
【问题描述】:
我正在尝试遍历几个数据帧,这些数据帧都有一个标准名称,而不是最后一个整数字符。我正在尝试遍历数据框并对每个数据框执行一项任务,但我不知道如何按名称引用每个数据框。
for(i in 1:length(xyz)){
approx(df & i & $X, df & i & $Y, xout=aim)
}
这本质上是我想要的格式,每次迭代都会增加数字 i 并因此增加数据框的名称,例如。 df1$X, df2$X, df3$X, df4$X...
我知道这段代码不起作用,但我不知道什么会起作用
【问题讨论】:
-
将它们放入列表并申请 (
lst1 <- mget(ls(pattern = 'df[0-9]+')); lapply(lst1, function(i) approx(i$X, ...))) -
一个让你自己的循环工作的相当老套的版本是
approx(eval(parse(text = paste0("df", i, "$X"))), eval(parse(text = paste0("df", i, "$Y"))), xout = aim)。但是听@Sotos 并使用一个列表。 -
我不完全理解@Sotos在这里使用的方法,这里的功能是如何应用的?
-
我了解@Leo 使用函数连接变量名称的方法,但我不明白该列表方法将如何包含信息以及如何应用近似函数
-
@tombat7112:
mget(ls(...))会将您的所有 data.frames 放入名为lst1的列表中。之后,您使用lapply()调用将函数function(i) approx(i$X, i$Y, xout = aim)应用于 data.frames 列表并打印输出,或通过分配output <- lapply(...)将其保存到另一个列表。