如何克服R中的这个“下标出界”错误?

时间:2016-05-22 15:44:16

标签: r for-loop

我有10个数据框的列表,名称为q1,q2,q3 .... q9,q10。 所有这些数据帧具有相同的结构,有两列:“word”和“count”。 现在我想打印前5行的值。我还想打印for循环的迭代计数。但是,当我运行以下for循环时,我收到错误 nam [[“word”]]中的错误:下标越界

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)
}}

当我更改我的代码来解决我的数据帧时,我得到的错误为 nam $ word中的错误:$ operator对原子向量无效

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 个答案:

答案 0 :(得分: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)