在这种情况下,我有很多csv文件,例如20个。它们每个都有不同的列名。所以我为他们建立了地图。
map
# variable location
# A 1
# B 1
# C 2
我试图全部阅读一次,所以我有这样的代码:
Table <- rbindlist(
apply(map, 1, function(x) {
fil <- paste0(x[2], ".csv")
sel <- x[1]
fread(file = fil, select = sel)
}
完成后,我得到一个data.table,其中包含所有数据的1列。如果使用rbind
,则会得到所需元素的大矩阵,但无法转换为所需的data.table形式。我该如何实现?请告知,谢谢。
答案 0 :(得分:2)
问题出在数据集“ map”中属于factor
类的列。当我们使用apply
时,它将转换为matrix
,并且factor
列被强制为integer
的值,这会导致不匹配。一种选择是转换为character
类。使用Map
rbindlist(Map(fread, file = paste0(map$location, ".csv"),
select = as.character(map$variable)))