aa <- data.frame(matrix(1:25, ncol = 5), matrix(4:28, ncol = 5), matrix(21:45, ncol=5))
aa_sum <- do.call(sum,aa)
aa_bind <- do.call(cbind,aa)
bb <- list(matrix(1:25, ncol = 5), matrix(4:28, ncol = 5), matrix(21:45, ncol=5))
bb_sum <- do.call(sum,bb)
bb_bind <- do.call(cbind,bb)
list和data.frame都是可以的
do.call() 是告诉list一个函数,然后list里的所有元素来执行这个函数。
例子
x <- list()
x[[1]] <- letters[seq(2,20,by=2)] #是第2 4 6...20个字母
names(x[[1]]) <- LETTERS[c(1:length(x[[1]]))] #每一个都给他们命名为大写字母ABCD...
x[[2]] <- letters[seq(3,20, by=3)]
names(x[[2]]) <- LETTERS[seq(3,20, by=3)]
x[[3]] <- letters[seq(4,20, by=4)]
names(x[[3]]) <- LETTERS[seq(4,20, by=4)]
结果展示:
可以看出list每一个元素的包含的数量都不同
如果直接用rbind
会是对于2 3 这两个不齐的,通过重复来补齐。然而也可以看出,它们并没有匹配列名称,例如2中的C本来是c,现在却不是
rbind.fill 可以很好的进行格式匹配
这样可以很好地匹配列名称,并用NA填充空白