在任意长的对象列表上使用cbind [英] Using cbind on an arbitrarily long list of objects
问题描述
我想找到一种方法,可以使用cbind()
将许多单独的对象连接在一起,从而创建一个data.frame.例如,如果A,B,C& D是所有等长向量,可以用
I would like to find a way to create a data.frame by using cbind()
to join together many separate objects. For example, if A, B, C & D are all vectors of equal length, one can create data.frame
ABCD with
ABCD <- cbind(A,B,C,D)
但是,当要合并的对象数量变大时,键入所有名称变得很麻烦.此外,是否有一种方法可以在对象名称的向量(例如
However, when the number of objects to be combined gets large, it becomes tedious to type out all of their names. Furthermore, Is there a way to call cbind()
on a vector of object names, e.g.
objs <- c("A", "B", "C", "D")
ABCD <- cbind(objs)
或在包含所有要合并对象的列表中,例如
or on a list containing all the objects to be combined, e.g.
obj.list <- list(A,B,C,D)
ABCD <- cbind(obj.list)
当前,我能想到的唯一解决方法是使用paste()
,cat()
,write.table()
和source()
构造cbind()
的参数,将其编写为脚本并将其用作源.这似乎是一个非常讨厌的恶棍.另外,我已经研究了do.call()
,但似乎找不到找到方法来完成我想要的事情.
Currently, the only workaround I can think of is to use paste()
, cat()
, write.table()
, and source()
to construct the arguments to cbind()
, write it as a script and source it. This seems like a very nasty kludge. Also, I have looked into do.call()
but can't seem to find a way to accomplish what I want with it.
推荐答案
do.call
函数在此处非常有用:
The do.call
function is very useful here:
A <- 1:10
B <- 11:20
C <- 20:11
> do.call(cbind, list(A,B,C))
[,1] [,2] [,3]
[1,] 1 11 20
[2,] 2 12 19
[3,] 3 13 18
[4,] 4 14 17
[5,] 5 15 16
[6,] 6 16 15
[7,] 7 17 14
[8,] 8 18 13
[9,] 9 19 12
[10,] 10 20 11
这篇关于在任意长的对象列表上使用cbind的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!