如何将全局环境中的多个变量保存到R中的数据框中?我可以用$一个接一个地做。但是有一个命令可以同时移动所有变量吗?
感谢。
答案 0 :(得分:3)
你可以这样做:
do.call(data.frame, lapply(ls(), get))
但我要说这听起来像是一个可怕的主意。
答案 1 :(得分:0)
如果有一个命名的对象列表,那么:
cbind(dfrm, list.obj)
E.g。
dados <- data.frame(x=1:10, v1=rnorm(10), v2=rnorm(10))
dat1 <- rnorm(10)
dat2 <- letters[1:5]
cbind(dados, list(new1=dat1, new2=dat2))
也可以使用此表格:
cbind(dados, new1=dat1, new2=dat2)
如果在全局环境中有一堆变量,其名称中包含字符串“zzz”,并且您希望将它们按列方式附加到现有数据框,则可以使用:
dados[, ls(patt="zzz") ] <- sapply( ls(patt="zzz"), get)
您可能会注意到我反对使用data.frame(cbind(...))
,但我说要使用cbind
。好吧,我假设在我的情况下第一个参数已经是一个数据帧,因此cbind
不会被调用,而是cbind.data.frame' gets called, and it will allow the usual list-behavior of data.frame objects to persist. If the first argument is only a vector, then
。内部(cbind(...)`将强制执行一个矩阵,它将删除所有参数的属性,然后强制进入公共存储模式。