2016-05-22 127 views
1

我有一個名稱爲q1,q2,q3 .... q9,q10的10個數據幀的列表。 所有這些數據幀的結構都與兩列相同:「字」和「計數」。 現在我想打印前5行的值。我也想打印for循環的迭代計數。但是,當我運行下面的for循環,我得到一個錯誤 錯誤在Nam [「字」]:下標越界如何克服R中這種「下標越界」的錯誤?

for(x in 1:10){ 
    for(y in 1:5){ 
    nam<-paste("q",x,sep = "") 
    print(nam[["word"]][y]) 
    print(nam[["count"]][y]) 
    print(y) 
}} 

,並當我改變我的代碼爲解決我的數據幀這樣的,我得到的錯誤,如南$字錯誤:$操作是無效的原子向量

for(x in 1:10){ 
    for(y in 1:5){ 
    nam<-paste("q",x,sep = "") 
    print(nam2$word[y]) 
    print(nam2$count[y]) 
    print(y) 
}} 

請建議我怎麼能避免/克服這一錯誤。任何幫助表示讚賞。謝謝, 阿曼

+1

歡迎到R語法的恐怖。 –

回答

2

由於nam只是一個字符在這裏,你需要使用get功能首先得到實際data.frame:

for(x in 1:10){ 
    for(y in 1:5){ 
    nam<-paste("q",x,sep = "") 
    print(get(nam)[["word"]][y]) 
    print(get(nam)[["count"]][y]) 
    print(y) 
}} 

別的辦法來完成你想看到這避免了什麼循環:

lapply(1:10, function(i) head(get(paste0("q", i)), 5)) 

或者:

lapply(mget(paste0("q", 1:10)), head, 5)