Reputation: 1306
So I'm trying to write a .csv file based on a data frame in R, but for some reason I keep getting the following error:
Error in .External2(C_writetable, x, file, nrow(x), p, rnames, sep, eol, :
unimplemented type 'list' in 'EncodeElement
This is what traceback() is giving:
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")
Any solution?
Upvotes: 22
Views: 24029
Reputation: 31
I just had the same issue and instead of using as.character() or as.numeric(), I used as.matrix(), and it kept my character variables character, and my numeric variables numeric, and output the .csv file like a dream.
Upvotes: 3
Reputation: 1952
You can also coerce data frames directly in R:
my.df <- data.frame(lapply(old.df, as.character), stringsAsFactors=FALSE)
CAVEAT: this will coerce your entire dataframe to whatever type you specify. For example, if you want to coerce your dataframe to number, you would replace 'as.characater' with 'as.numeric':
my.df <- data.frame(lapply(old.df, as.numeric), stringsAsFactors=FALSE)
Upvotes: 31
Reputation: 3182
One of your columns is of type list, so the data.frame is no longer 2-dimensional and can't be exported to a 2d csv-file.
If you still want to store the list in the resulting output, you might transform it to JSON first. So it becomes an column of type "character" which can be easily exported as one column to csv.
Upvotes: 20