将全局环境中的变量移动到R中的数据框

时间:2013-08-19 20:12:28

标签: r

如何将全局环境中的多个变量保存到R中的数据框中?我可以用$一个接一个地做。但是有一个命令可以同时移动所有变量吗?

感谢。

2 个答案:

答案 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(...)`将强制执行一个矩阵,它将删除所有参数的属性,然后强制进入公共存储模式。

相关问题