web-dev-qa-db-ja.com

Rのデータフレームを.csvに出力する

Rのデータフレームに基づいて.csvファイルを書き込もうとしていますが、何らかの理由で次のエラーが発生し続けます。

Error in .External2(C_writetable, x, file, nrow(x), p, rnames, sep, eol,  : 
  unimplemented type 'list' in 'EncodeElement

これがtraceback()が提供するものです:

5: write.table(df, file = "df.csv", col.names = NA, 
       sep = ",", dec = ".", qmethod = "double")
4: eval(expr, envir, enclos)
3: eval(expr, p)
2: eval.parent(Call)
1: write.csv(df, file = "df.csv")

解決策はありますか?

20
riders994

列の1つがリストタイプであるため、data.frameは2次元ではなくなり、2d csvファイルにエクスポートできません。

結果の出力にリストを保存したい場合は、最初にリストをJSONに変換できます。したがって、「文字」型の列になり、csvに1つの列として簡単にエクスポートできます。

20
Marcel Hebing

Rで直接データフレームを強制変換することもできます。

my.df <- data.frame(lapply(old.df, as.character), stringsAsFactors=FALSE)

警告:これにより、データフレーム全体が指定したタイプに強制されます。たとえば、データフレームを数値に強制したい場合は、「as.characater」を「as.numeric」に置き換えます。

 my.df <- data.frame(lapply(old.df, as.numeric), stringsAsFactors=FALSE)
30
SummerEla

私は同じ問題を抱えていて、as.character()またはas.numeric()を使用する代わりに、as.matrix()を使用しました。これにより、文字変数が文字になり、数値変数が数値になり、.csvファイルが出力されました。夢のような。

3
Andy Bogart