data.frame構造の2つのデータフレームを取り除き、各data.frameの要素を抽出し、データフレームから抽出したデータを1つのdata.frameに結合しようとしています。これにより、2つの列をベクトルとして含むdata.frameが作成されます。以下の出力(太字でマーク)を参照してください。
問題:出力には、入力データフレームからのベクトルを含む単一のdata.frameではなく、複数のdata.frame要素が含まれています。
各データフレームは1つのベクトルを保持します。
[コメントに応じてEDIT^v。]
as()
これまでのところ、私はさまざまな組み合わせを試しunlist()
ましたが、役に立ちませんでした...
組み込みのR関数とベクトル化を使用してこの問題を解決しようとしています(使用せずplyr
、loops
:ループを使用して複数のdata.framesを1つのdata.frameにマージします。csvファイルから多くのデータフレームをマージします。Data.framesのリストをに再結合します。単一のデータフレーム)
再現可能なコード:エラーを再現できませんでしたが、コードが機能することを望んだ方法は次のとおりです。
df1<-data.frame<-c(1, 2, 3)
df2<-data.frame<-c(2, 4, 6)
output<-cbind(df1, df2)
print(output) #Returns a data.frame
str(output) # of vectors
#In my case however, a data.frame returns data.frames)
これは次を返します:
df1 df2
[1,] 1 2
[2,] 2 4
[3,] 3 6
現実:
readmultiple <- function(directory = "bigdata") {
....
....
....
output <- cbind.data.frame(filename, readmultiplesum)
# This is probably where things go wrong
return(output)
}
output <- lapply(filenames, complete.cases.sum)
assign("Global.output", output, envir = .GlobalEnv)
# There is probably a better way to do this too
if (firstoutput == 1) {
Global.output <- merge(as(unlist(Global.output[1]), "vector"),
as(unlist(output[1])), "vector")
# as, unlist... Not sure what's needed here
} else {
firstoutput <- 1
}
str(output)
return(Global.output)
}
出力は次のようになります
[[1]]
filename result
1 142
[[2]]
filename result
1 521
[[3]]
filename result
1 324
しかし、私はそれがなることを望みます
filename result
[1,] filename[i] 142
[2,] filename[i] 521
[3,] filename[i] 324
...ここで、filename[i]はファイル名のインデックスです。
str(output)は
List of 2400
$ :'data.frame': 1 obs. of 2 variables:
..$ filename : Factor w/ 1 level "bigdata/001.csv": 1
..$ sumrows: num 142
$ :'data.frame': 1 obs. of 2 variables:
..$ filename : Factor w/ 1 level "bigdata/001.csv": 1
..$ sumrows: num 521
$ :'data.frame': 1 obs. of 2 variables:
..$ filename : Factor w/ 1 level "bigdata/001.csv": 1
..$ sumrows: num 324
$ :'data.frame': 1 obs. of 2 variables:
..$ filename : Factor w/ 1 level "bigdata/001.csv": 1
.....
dput(head(output))は
list(structure(list(filename = structure(1L, .Label = "bigdata/001.csv", class = "factor"),
sumrows = 142), .Names = c("filename", "sumrows"), row.names = c(NA,
-1L), class = "data.frame"), structure(list(filename = structure(1L, .Label = "bigdata/001.csv", class = "factor"),
sumrows = 521), .Names = c("filename", "sumrows"
), row.names = c(NA, -1L), class = "data.frame"), structure(list(
filename = structure(1L, .Label = "bigdata/001.csv", class = "factor"),
sumrows = 324), .Names = c("filename", "sumrows"), row.names = c(NA,
-1L), class = "data.frame"), structure(list(filename = structure(1L, .Label = "bigdata/001.csv", class = "factor"),
sumrows = 1896), .Names = c("filename", "sumrows"
), row.names = c(NA, -1L), class = "data.frame"), structure(list(
filename = structure(1L, .Label = "bigdata/001.csv", class = "factor"),
sumrows = 1608), .Names = c("filename", "sumrows"
), row.names = c(NA, -1L), class = "data.frame"), structure(list(
filename = structure(1L, .Label = "bigdata/001.csv", class = "factor"),
sumrows = 912), .Names = c("filename", "sumrows"), row.names = c(NA,
-1L), class = "data.frame"))