c(t(therelevantdata)).
:
Values <- c(t(myDf[-1]))
, :
Names <- sprintf("r%ss%s", rep(1:5, each = 2), 1:2)
:
setNames(Values, Names)
data.frame :
setNames(data.frame(t(Values)), Names)
list data.frame s, @cyro111, :
do.call(rbind, lapply(myDfList, function(x) c(t(x[-1]))))
# [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
# [1,] 0 1 2 3 4 5 6 7 8 9
# [2,] 10 11 12 13 14 15 16 17 18 19
Convert to data.framewith as.data.frameand add names with names <-or setNames.
Generalized as a function:
myFun <- function(indf, asVec = TRUE) {
values <- c(t(indf[-1]))
Names <- sprintf("r%ss%s", rep(1:nrow(indf), each = ncol(indf[-1])),
1:ncol(indf[-1]))
out <- setNames(values, Names)
if (isTRUE(asVec)) out
else (as.data.frame(as.matrix(t(out))))
}
Try:
myFun(myDf) # Vector
myFun(myDf, FALSE) # data.frame
This is even more convenient on listof data.frames .... many options :-)
dfList1 <- list(
data.frame(s = 1:2, a1 = 1:2, a2 = 3:4, a3 = 5:6),
data.frame(s = 1:2, a1 = 11:12, a2 = 31:32, a3 = 51:52)
)
lapply(dfList1, myFun)
do.call(rbind, lapply(dfList1, myFun))
t(sapply(dfList1, myFun))
as.data.frame(do.call(rbind, lapply(dfList1, myFun)))