2017-06-13 140 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))