3

指定したディレクトリ内のすべてのファイルのデータ フレームオブジェクトからデータを 1つのデータ テーブルにロードしようとしています。これは私がこれをやろうとした方法です: .RData

library(data.table)

fileList <- list.files("../cache/FLOSSmole", pattern="\\.RData$", full.names=TRUE)
dataset <- rbindlist(lapply(fileList, FUN=function(file) {as.data.table(load(file))}))

ただし、結果は予想とは異なります (すべてのデータを含む単一のデータ テーブル)。ソースファイルのデータ フレーム オブジェクトの名前だけが含まれています。.RData

> str(dataset)
Classes ‘data.table’ and 'data.frame':  39 obs. of  1 variable:
 $ V1: chr  "lpdOfficialBugTags" "lpdLicenses" "lpdMilestones" "lpdSeries" ...
 - attr(*, ".internal.selfref")=<externalptr>
> head(dataset)
                        V1
1:      lpdOfficialBugTags
2:             lpdLicenses
3:           lpdMilestones
4:               lpdSeries
5:             lpdProjects
6: lpdProgrammingLanguages

私は何を間違っていますか?あなたの助けは大歓迎です!

私のR環境:

> sessionInfo()
R version 3.1.0 (2014-04-10)
Platform: x86_64-pc-linux-gnu (64-bit)

locale:
 [1] LC_CTYPE=en_US.UTF-8       LC_NUMERIC=C
 [3] LC_TIME=en_US.UTF-8        LC_COLLATE=en_US.UTF-8
 [5] LC_MONETARY=en_US.UTF-8    LC_MESSAGES=en_US.UTF-8
 [7] LC_PAPER=en_US.UTF-8       LC_NAME=C
 [9] LC_ADDRESS=C               LC_TELEPHONE=C
[11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base

other attached packages:
[1] data.table_1.9.2

loaded via a namespace (and not attached):
[1] plyr_1.8.1    Rcpp_0.11.1   reshape2_1.4  stringr_0.6.2 tools_3.1.0
4

1 に答える 1

5

.RDataは保存されたワークスペースです。データ フレームが含まれている場合がありますが、データ フレームではありません。それぞれにいくつのデータフレームがあります.RDataか? 複数の.RDataファイルをロードして、現在のワークスペースに追加できます。それらをすべてロードするmergerbind、現在のワークスペースに入ったら data.frames をロードするだけです

# lapply(FileList,function(x) load(x)) # Changed to a for loop, I guess the lapply was only loading into the lapply environment which disappears when the function ends
for (i in 1:length(FileList)) {
   load(FileList[i])
}
my.list <- vector(length(ls()),mode="list")
for (i in 1:length(ls())) {
    my.list[[i]] <- get(ls()[i])
}
my.rbind <- do.call(rbind,my.list)

これは一つの方法です。簡単な方法は、最初に個々のテーブルを区切りテキスト ファイルとして保存することです。

于 2014-07-08T07:55:22.333 に答える