Rデータフレーム及びRリストは、潜在的に互換性がない...
リストは、本質的に、各要素は、要素の異なるタイプおよび長さのものとすることができるベクターです。一方、データフレームは、各列が異なるタイプのデータ、またはネストされていないリストを格納できる均一なスプレッドシートと考えることができます各要素は同じ長さですです。リストが不等長を持つことができ、データフレームは長さを持たないので、この最後の点は重要です。
したがって、R-オブジェクトとして保存し、同様に、以降のRオブジェクトが復元されsaveRDS()
dataDir <- "."
saveRDS(operacions, file.path(dataDir, "files"))
operacions2 <- readRDS(file.path(dataDir, "files"))
を使用してRDSファイルとしてリストを保存することが容易であってもよいです。
データフレームに変換する場合は、最初にネストされたデータフレームに変換してからデータフレームの空白を埋め込むことができます。このように...
require(data.table)
require(plyr)
operacions<-list(list(Nom="Victor",Bolis= c("Negro","azul","verde")),list(Nom="Dani",Lapices=c(1:4)))
str(operacions)
operacionsdf <- lapply(operacions, data.frame, stringsAsFactors = FALSE)
str(operacionsdf)
operacionsdf2 <- rbind.fill(operacionsdf)
str(operacionsdf2)
write.csv2(operacionsdf2, "file.csv",row.names = FALSE)
operacionsdf3 <- read.csv2("file.csv")
str(operacionsdf3)
出力:
> require(data.table)
> require(plyr)
> operacions<-list(list(Nom="Victor",Bolis= c("Negro","azul","verde")),list(Nom="Dani",Lapices=c(1:4)))
> str(operacions)
List of 2
$ :List of 2
..$ Nom : chr "Victor"
..$ Bolis: chr [1:3] "Negro" "azul" "verde"
$ :List of 2
..$ Nom : chr "Dani"
..$ Lapices: int [1:4] 1 2 3 4
> operacionsdf <- lapply(operacions, data.frame, stringsAsFactors = FALSE)
> str(operacionsdf)
List of 2
$ :'data.frame': 3 obs. of 2 variables:
..$ Nom : chr [1:3] "Victor" "Victor" "Victor"
..$ Bolis: chr [1:3] "Negro" "azul" "verde"
$ :'data.frame': 4 obs. of 2 variables:
..$ Nom : chr [1:4] "Dani" "Dani" "Dani" "Dani"
..$ Lapices: int [1:4] 1 2 3 4
> operacionsdf2 <- rbind.fill(operacionsdf)
> str(operacionsdf2)
'data.frame': 7 obs. of 3 variables:
$ Nom : chr "Victor" "Victor" "Victor" "Dani" ...
$ Bolis : chr "Negro" "azul" "verde" NA ...
$ Lapices: int NA NA NA 1 2 3 4
> write.csv2(operacionsdf2, "file.csv",row.names = FALSE)
> operacionsdf3 <- read.csv2("file.csv")
> str(operacionsdf3)
'data.frame': 7 obs. of 3 variables:
$ Nom : Factor w/ 2 levels "Dani","Victor": 2 2 2 1 1 1 1
$ Bolis : Factor w/ 3 levels "azul","Negro",..: 2 1 3 NA NA NA NA
$ Lapices: int NA NA NA 1 2 3 4
これは、データフレームではありません、これはリストのリストです。ここでの問題は要素の長さが異なることです。 'rapply(operacions、length)'は '1 3 1 4'を返します。 '.csv'は固定長が必要なので、これは問題です。アウトプットの予想されるフォーマットはここには何がありますか? – Laterow
これはあなたの質問に答えるかもしれません:http://stackoverflow.com/a/27594769/5805670 – Laterow