我有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)
}}
请建议我如何避免/克服此错误。任何帮助表示赞赏。谢谢, 阿曼
答案 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)