R - 将excel读入源结构中的数据帧并获取读取的行数

时间:2018-04-28 18:52:10

标签: r excel

我正在尝试使用R。

将excel读入数据框
dat = lapply(file.list, function(i){
print(i);
x = read_xlsx(i,sheet=NULL, range=cell_cols("A:AE"), col_names=TRUE, skip=1, trim_ws=TRUE, guess_max=1000)
x$file=i
print(x$file)
 # Return data
 x
})

如何查找从每个Excel中读取的行数。我想得到这个数字,以确保我可以使用excel中的实际计数来验证读取的记录数。

2 个答案:

答案 0 :(得分:1)

如果在调用lapply之前初始化行计数向量,则可以存储每个工作表的行数(或完整维度)。类似的东西:

row_counts <- vector()

dat = lapply(file.list, function(i){
    print(i);
    x = read_xlsx(i,sheet=NULL, range=cell_cols("A:AE"), 
        col_names=TRUE, skip=1, 
        trim_ws=TRUE, guess_max=1000)
    row_counts[i] <- nrow(x)
    x$file=i
    print(x$file)
 # Return data
 x
})

答案 1 :(得分:0)

另一种方法是创建一个list()对象作为apply函数的结果,其中输出列表包括数据对象和计数。

由于我有一组现成的示例文件,其格式为csv格式,来自Alberto Barradas&#39;来自kaggle.com的Pokémon Stats数据,我将使用read.csv()代替read_xlsx(),但该过程适用于任一功能。

download.file("https://raw.githubusercontent.com/lgreski/pokemonData/master/pokemonData.zip",
              "pokemonData.zip",
              method="curl",mode="wb")
unzip("pokemonData.zip")

thePokemonFiles <- list.files("./pokemonData",
                              full.names=TRUE)
fileList <- lapply(thePokemonFiles,function(x) {
     # read data and generate a list object including the data and row count 
     data <- read.csv(x)
     list(data = data,rows=nrow(data))
})
# extract counts from the list
unlist(lapply(fileList,function(x){x["rows"]}))

...和输出:

> # extract counts from the list
> unlist(lapply(fileList,function(x){x["rows"]}))
rows rows rows rows rows rows 
 165  106  160  121  165   82 
>