【发布时间】:2018-05-16 01:44:01
【问题描述】:
我有 50 个 Stata 格式的数据集,我想将它们读入 R 并保存为 RData 集。目前,我的代码如下所示:
# Package to read Stata data sets into R
library(haven)
# Data set 1: Read Stata data into R
dataset1 <- read_dta("C:/dataset1.dta")
# Save as RData
save(dataset1, file = "C:/RData/dataset1.Rdata")
# Data set 2: Read Stata data into R
dataset2 <- read_dta("C:/dataset2.dta")
# Save as RData
save(dataset2, file = "C:/RData/dataset2.Rdata")
这很笨重并且占用了很多行代码。我想创建一个函数或循环,以有效地完成此操作,并且更易于理解和调试。
这段代码让我几乎到了那里(感谢@canyon),除了当我加载数据文件时,它们都有名为“import_data”的名称。文件本身命名正确(即 dataset1.Rdata、dataset2.Rdata),但加载到 R 时,环境名称为“import_data”。这是有问题的,因为我不能在同一环境中打开超过 1 个文件,因为它将覆盖现有文件(例如,dataset2.Rdata 将覆盖 dataset1.Rdata)。有没有办法使用与save 中的file = 选项匹配的名称保存文件?
library(haven)
library(stringr)
your_function <- function(x) {
import_path <- str_c("C:/dataset", (x), ".dta")
import_data <- read_dta(import_path)
save_path <- str_c("C:/RData/dataset", (x), ".Rdata")
save(import_data, file = save_path)
}
lapply(1:50, your_function)
我查看了看似解决此问题的链接帖子,但没有一个解决此特定问题。
【问题讨论】:
-
这些帖子让我快到了,但没有解决如何处理将数据对象命名为与文件名相同的问题。与“遍历 R 目录中的所有文件,...”建议的答案相同。似乎有很多关于如何动态命名文件的帖子,但没有关于如何动态命名数据对象的帖子。
标签: r