2015-10-05 124 views
0

我有六個數據幀,z1,z2,... z6。 (從一個excel文件的六張不同的表中讀取)。對數據幀循環操作,改變數據幀名稱

我需要對這些數據框進行子集化並構建一些模型。這個過程對每個人來說都是一樣的。我希望能夠在循環中完成,但無法找到正確的語法。 (我試圖使用粘貼和分配函數,但它沒有幫助)。 比如我想

for (i in 1:6){ 
Z=subset(Zi,Zi$var1==1) 
} 

字應該是Z1,Z2,Z3正是已定義的。我可以在每次迭代中通過粘貼功能生成一個變量Z1,Z2,如

temp = paste('Z',i,sep ='')但我不能用'temp'代替上面的Zi碼。

有關於類似問題的其他線程的一些討論,但我無法找到任何直接相關的問題。如果我錯過了某些東西,請將我指向正確的主題。

+0

下一次[把你的數據幀放在列表中](http://stackoverflow.com/a/24376207/903061)。 – Gregor

+0

感謝您的提示。需要了解我的猜測。 – Tapan

回答

1

我們使用mget得到list中的'值',在listlapply(..))上循環,並基於'var1'列對子行進行子集化。

lapply(mget(paste0('Z', 1:6)), subset, subset=var1==1) 
+0

不知道它是否有效,但肯定給了我更多關於如何去做的想法。 – Tapan

0

是數據的列名是否相似?如果是這樣,你可能想這樣做:

library(dplyr) 

"Z" %>% 
    paste0(1:6) %>% 
    mget %>% 
    bind_rows(.id = "source") %>% 
    filter(var1 == 1)