次のコードを使用して名前を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
を使用して名前を付けた単一のデータフレームに行バインドします。rbind
plyr
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'
パッケージのmelt
andcast
関数を使用してデータフレームを再形成しようとすると、別の同様のエラーがスローされます。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
。
どうもありがとう。