![](/img/trans.png)
[英]Create list of data.frames with specific rows from list of data.frames
[英]Function to create list of list from two data.frames
我有兩個data.frames firstdf和secondf,(下面的示例數據。)我正在嘗試創建一個函數,該函數將輸出類似下面的ExampleList數據的結果。 我想創建一個列表列表,在該列表中,它從firstdf抓取第一行條目,並將它們的值放在exampleList的事物和測試字段中,然后從seconddf的另一個字段抓取前三個值,將它們連接在一起,然后保存它們放在exampleList的otherthing字段中,然后移至firstdf中的下一行,並移至seconddf中的下3行。 循環對我來說有點棘手,因此絕對感謝您提供提示。
data:
dput(firstdf)
structure(list(thing = structure(1:3, .Label = c("thing1", "thing2",
"thing3"), class = "factor"), test = structure(1:3, .Label = c("test1",
"test2", "test3"), class = "factor")), .Names = c("thing", "test"
), row.names = c(NA, -3L), class = "data.frame")
dput(seconddf)
structure(list(otherthing = structure(c(4L, 5L, 6L, 7L, 8L, 9L,
1L, 2L, 3L), .Label = c("thing10", "thing11", "thing12", "thing4",
"thing5", "thing6", "thing7", "thing8", "thing9"), class = "factor"),
other = structure(c(9L, 6L, 7L, 2L, 3L, 1L, 8L, 4L, 5L), .Label = c("fads",
"oiu", "qwer", "rewa", "rewq", "sfas", "sfwg", "tre", "xdfs"
), class = "factor")), .Names = c("otherthing", "other"), row.names = c(NA,
-9L), class = "data.frame")
並輸出:
dput(ExampleList)
list(structure(list(thing = "thing1", test = "test1", otherthing = c("thing4",
"thing5", "thing6")), .Names = c("thing", "test", "otherthing"
)), structure(list(thing = "thing2", test = "test2", otherthing = c("thing7",
"thing8", "thing9")), .Names = c("thing", "test", "otherthing"
)), structure(list(thing = "thing3", test = "test3", otherthing = c("thing10",
"thing11", "thing12")), .Names = c("thing", "test", "otherthing"
)))
[[1]]
[[1]]$thing
[1] "thing1"
[[1]]$test
[1] "test1"
[[1]]$otherthing
[1] "thing4" "thing5" "thing6"
[[2]]
[[2]]$thing
[1] "thing2"
[[2]]$test
[1] "test2"
[[2]]$otherthing
[1] "thing7" "thing8" "thing9"
[[3]]
[[3]]$thing
[1] "thing3"
[[3]]$test
[1] "test3"
[[3]]$otherthing
[1] "thing10" "thing11" "thing12"
你可以使用Map
,的多元版本lapply
(與split
為otherthing
)。 第一個參數是一個函數,該函數應用於將並行迭代的多個參數,因此
ExampleList <- Map(list,
thing = as.character(firstdf$thing),
test = as.character(firstdf$test),
otherthing = split(as.character(seconddf[[1]]), rep(1:3, each = 3)))
str(ExampleList)
## List of 3
## $ thing1:List of 3
## ..$ thing : chr "thing1"
## ..$ test : chr "test1"
## ..$ otherthing: chr [1:3] "thing4" "thing5" "thing6"
## $ thing2:List of 3
## ..$ thing : chr "thing2"
## ..$ test : chr "test2"
## ..$ otherthing: chr [1:3] "thing7" "thing8" "thing9"
## $ thing3:List of 3
## ..$ thing : chr "thing3"
## ..$ test : chr "test3"
## ..$ otherthing: chr [1:3] "thing10" "thing11" "thing12"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.