无需显式编写所有对象即可提及函数内所有对象的简单方法
Easy way to mention all the objects inside a function without explicitly writing all of them
假设我创建了 100 个名为 v1、v2、v3、v4、v5、...、v99、v100 的数据框。
所有这些数据框的大小都相同,我的意思是它们都有相同的列集。
我现在想在 write.csv 内使用 rbind 导出附加在单个 csv 文件中的所有这些数据帧。
所以我正在使用函数
write.csv(rbind(v1, v2, v3,v4,v5), "myfilename.csv")
上面的命令完成了工作,但如您所见,仅附加了 5 个数据帧。我想附加所有数据帧,即从 v1 到 v100(按顺序),但是单独写下它们的所有名称可能是一项痛苦的任务。有没有一种简单的方法可以在不写下所有对象名称的情况下提及所有对象名称。感谢期待。
如果您必须有单独的对象,则获取名称并按编号排序。然后将它们一起复制到列表L
和rbind
中
nms <- ls(pattern = "^v\d+$")
nms <- nms[order(as.numeric(sub("v", "", nms)))]
L <- mget(nms)
DF <- do.call("rbind", L)
然而,正如@MrFlick 提到的那样,最好首先在列表 L
中创建它们,在这种情况下只需要最后一条语句。
假设我创建了 100 个名为 v1、v2、v3、v4、v5、...、v99、v100 的数据框。 所有这些数据框的大小都相同,我的意思是它们都有相同的列集。 我现在想在 write.csv 内使用 rbind 导出附加在单个 csv 文件中的所有这些数据帧。 所以我正在使用函数
write.csv(rbind(v1, v2, v3,v4,v5), "myfilename.csv")
上面的命令完成了工作,但如您所见,仅附加了 5 个数据帧。我想附加所有数据帧,即从 v1 到 v100(按顺序),但是单独写下它们的所有名称可能是一项痛苦的任务。有没有一种简单的方法可以在不写下所有对象名称的情况下提及所有对象名称。感谢期待。
如果您必须有单独的对象,则获取名称并按编号排序。然后将它们一起复制到列表L
和rbind
中
nms <- ls(pattern = "^v\d+$")
nms <- nms[order(as.numeric(sub("v", "", nms)))]
L <- mget(nms)
DF <- do.call("rbind", L)
然而,正如@MrFlick 提到的那样,最好首先在列表 L
中创建它们,在这种情况下只需要最后一条语句。