我正在尝试使用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中的实际计数来验证读取的记录数。
答案 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
>