2016-05-22 132 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)