2017-06-13 135 views
0

我试图通过几个数据帧都有一个标准的名称,而不是最后一个字符是一个整数。我试图循环遍历数据框并在每个框架上执行任务,但我不知道如何按名称引用每个数据框。循环通过变量迭代组件

for(i in 1:length(xyz)){ 
    approx(df & i & $X, df & i & $Y, xout=aim) 
} 

基本上是格式我想,其中每次迭代将增加数量i,并且因此数据帧例如名称。 DF1 $ X,DF2 $ X,DF3 $ X,DF4 $ X ...

我知道这个代码将不能工作,但我不知道什么会

+2

把它们放在一个列表和应用('LST1 < - MGET(LS(图案= 'DF [0-9] +')); lapply(LST1,函数(ⅰ)约(I $ X, ...))') – Sotos

+1

一个相当黑客的版本让你自己的循环工作将是'approx(eval(parse(text = paste0(“df”,i,“$ X”))),eval(parse( text = paste0(“df”,i,“$ Y”))),xout = aim)'。但听@Sotos并使用列表。 – LAP

+0

我并不完全理解@Sotos在这里使用的方法,这里应用的功能如何? – tombat7112

回答

0

我的路D做到这一点,是把它们放在一个列表中并迭代。使用mget我们通过在ls()中指定一个模式来获取感兴趣的对象,在你的情况下这将是df[0-9]+。最后使用lapply进行迭代。

lst1 <- mget(ls(pattern = 'df[0-9]+')) 
lapply(lst1, function(i) approx(i$X, i$Y, xout = aim))