-1

次のコードを使用して名前をpath付けたデータフレームのリストにインポートするパスに、一連の .csv ファイルがあります。datalist

require(gsubfn) ## to use strapply

datalist <- list()
files <- list.files(path)

for(file in files) {
    stem <- gsub("\\.csv$","",file)
    datalist[[stem]] <- data.frame(read.delim(file, sep = ";", header=TRUE))
    month <- strapply(stem,"^([^_]*).*$")
    year <- strapply(stem,"^[^_]*_([^_]*)_.*$")
    datalist[[stem]]$Month <- month
    datalist[[stem]]$Year <- year
}

(お気づきかもしれませんが、データが参照する月と年も 2 つの正規表現を使用して取得していますが、これが後で遭遇する問題の原因にはなりません。)

次に、すべてのデータフレームを、パッケージの関数mergedを使用して名前を付けた単一のデータフレームに行バインドします。rbindplyr

require(plyr) ## to use rbind

merged <- rbind.fill(datalist)

私の問題は、最終的にデータフレームがリストの奇妙なデータフレームのように見えることです。実際、.csv 形式にエクスポートしようとすると、R は次のエラーをスローします。

write.csv(merged,'merged.csv')

Error in write.table(x, file, nrow(x), p, rnames, sep, eol, na, dec, as.integer(quote),: 
unimplemented type 'list' in 'EncodeElement'

パッケージのmeltandcast関数を使用してデータフレームを再形成しようとすると、別の同様のエラーがスローされます。reshape

require(reshape) ## to use melt and cast
molten <- melt(merged)

cast <- cast(molten, ...formula...)

Error in order(var1 = c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, : 
unimplemented type 'list' in 'listgreater'

では、データフレームのリストから通常のデータフレームを取得するにはどうすればよいですか? unimplemented type 'list' in 'EncodeElement'リスト内の1つのデータフレームだけを.csvにエクスポートしようとしても同じエラーがスローされるため、問題は「インポート」プロセスにあると思いますdatalist

どうもありがとう。

4

2 に答える 2

0

リスト内のすべての data.frames の見出しが同じである限り、plyr を使用できます。

library(plyr) 
dat <- ldply(your_list)

例えば:

dat <- data.frame(A=1:10,B=rnorm(10))
alistofdataframes <- list()
alistofdataframes$group1 <- dat
alistofdataframes$group2 <- dat
ldply(alistofdataframes)
于 2012-12-02T19:05:22.063 に答える