R:数据帧列表中特定列的类

时间:2017-03-08 02:04:43

标签: r excel lapply

我有一组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深入查看列表中的数据框?

1 个答案:

答案 0 :(得分:0)

以下是我如何使用lapply在名为ax的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"