我有一组excel文件,每个文件包含一张数据,所有类似的结构(主要是 - 见下文),我想最终合并成一个大数据框(每个子集由原始文件索引)资源)。 我能够创建一个包含多个数据帧的列表,然后将这些数据帧合并到一个数据帧中,使用以下代码非常容易:
files <- grep(".xlsx", dir(), value=TRUE) # vector of file names
IDnos <- substr(files,20,24) #vector with key 5-digit ID info of each file
library("XLConnect")
library("data.table")
datalist <- lapply(files, readWorksheetFromFile, sheet = "Data")
names(datalist) <- IDnos
bigdatatable <- rbindlist(datalist, idcol = "IDNo")
一个数据栏&#34;价值&#34;通常是类数字,但我发现在几个中有一个&#34; ND&#34;放入一行,使其成为类字符,因此在最终数据框中,列是字符。
虽然我可以通过一些简单的清理解决这个问题,但我还是想知道是否有方法可以在数据框列表中识别出#34;阶段哪个文件(或我创建的列表的数据框组件)与列#34;值&#34;的类字符。例如,我无法运行sapply(datalist,class)或其他变体。我希望避免使用for循环。
有没有办法使用lapply或sapply深入查看列表中的数据框?
答案 0 :(得分:0)
以下是我如何使用lapply
在名为a
和x
的2个数据框的列表中查找列y
的类。
datalist <- list(x = data.frame(a = letters),
y = data.frame(a = 1:26))
lapply(datalist, function(x) class(x$a))
$x
[1] "factor"
$y
[1] "integer"