for循环以打印列表中文件的尺寸

时间:2018-12-10 07:13:14

标签: r for-loop

temp <- list.files(pattern = '*.xlsx')
list <- lapply(temp,read_excel)

上面的列表有12个文件。我想检查这12个文件中每个文件的尺寸,即每个文件中的行数和列数。

for(i in length(list)){
  print(dim(list[[i]]))
}

[1] 12533    49

上面的for循环只给我最后一个文件的输出,而我需要for循环给我每12个文件的尺寸。

有人可以让我知道需要做什么。

1 个答案:

答案 0 :(得分:0)

您需要将for循环更改为

for(i in 1:length(list)){
   print(dim(list[[i]]))
}

因为1:length(list)将创建一个数字序列来循环,而length(list)将仅给出列表的长度(在您的情况下为12),并且不会生成该序列。

此外,您甚至不需要循环即可执行此操作。您可以只使用lapply,它将为您提供列表的尺寸。

lapply(list, dim)

例如

list_df <- list(mtcars, iris)
lapply(list_df, dim)

#[[1]]
#[1] 32 11

#[[2]]
#[1] 150   5

另一方面,将列表命名为list不是一个好习惯,因为它是内部R函数。