如何将全局环境中的多个变量保存到 R 中的数据框中?我可以使用 $ 来一一完成。但是是否有一个命令可以一次移动所有变量?
谢谢。
你可以做:
do.call(data.frame, lapply(ls(), get))
但我只想说这听起来是个可怕的想法。
如果有一个命名的对象列表,那么:
cbind(dfrm, list.obj)
例如
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
.Internal(cbind(...)` 将对矩阵进行强制转换,该矩阵将删除所有参数的属性然后强制进入通用存储模式。