データフレームの別のリストを持つリストを得ました。 外部リスト要素は年を表し、内部リストは月データを表します。特定の方法でリストのデータフレームのリストを結合する
今、すべての月のデータを含む最終的なリストを作成したいと思います。各月の列は、他の年の列の値によって「cbinded」されます。私はfor
ループとその少し複雑なを使用してみました
を以下のよう
Alldata <- list()
Alldata[[1]] <- list(data.frame(Jan_2015_A=c(1,2), Jan_2015_B=c(3,4)), data.frame(Feb_2015_C=c(5,6), Feb_2015_D=c(7,8)))
Alldata[[2]] <- list(data.frame(Jan_2016_A=c(1,2), Jan_2016_B=c(3,4)), data.frame(Feb_2016_C=c(5,6), Feb_2016_D=c(7,8)))
期待される出力リストがあり、私は任意のR関数は、この作業をしたいです。
私は以下のコードを使ってforループを使ってこれを行っています。しかし、これは本当に複雑で、私はこの少し複雑に思った。この操作のための簡単できれいなコードが得られることを願っています。
私はあなたが以下の次の操作を行うことができ
x2 <- list()
for(l1 in 1: length(Alldata[[1]])){
temp <- list()
for(l2 in 1: length(Alldata)){
temp <- append(temp, list(Alldata[[l2]][[l1]]))
}
x2 <- append(x2, list(temp))
}
# then created final List with succesive years data of each month as list items. This is primarily used for Tracking data for years For Example: how much was count was for Jan_2015 and Jan_2016 for "A"
finalList <- list()
for(l3 in 1: length(x2)){
temp <- x2[[l3]]
td2 <- as.data.frame(matrix("", nrow = nrow(temp[[1]])))
rownames(td2)[rownames(temp[[1]])!=""] <- rownames(temp[[1]])[rownames(temp[[1]])!=""]
for(l4 in 1:ncol(temp[[1]])){
for(l5 in 1: length(temp)){
# lapply(l4, function(x) do.call(cbind,
td2 <- cbind(td2, temp[[l5]][, l4, drop=F])
}
}
finalList <- append(finalList, list(td2))
}
> finalList
[[1]]
V1 Jan_2015_A Jan_2016_A Jan_2015_B Jan_2016_B
1 1 1 3 3
2 2 2 4 4
[[2]]
V1 Feb_2015_C Feb_2016_C Feb_2015_D Feb_2016_D
1 5 5 7 7
2 6 6 8 8
あなたはこれまでにどのようなコードを書いていますか? –
@C_Z_ forループを使用して私のコードで更新された質問を参照してください。 –