I have two data.frames firstdf and secondf, (example data below.) I’m trying to create a function that would output results like the ExampleList data I have below. I want to create a list of lists, where it grabs the first row entries from firstdf and puts their values in the thing and test fields in exampleList, then grabs the first 3 values from the otherthing field in seconddf, concatenates them together, and saves them in the otherthing field in exampleList, then moves on to the next row in firstdf and the next 3 rows in seconddf. Loops are a little tricky for me, so tips are definitely appreciated.
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")
And output:
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"