我有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)。有没有办法保存文件的名称与file =
中的save
选项相匹配?
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)
我查看了似乎解决此问题的链接帖子,但没有一个解决了这个具体问题。
答案 0 :(得分:0)
试试这个例子(已编辑):
read_function <- function(x) {
import_path <- str_c("dataset", (x), ".rds")
readRDS(file = import_path)
}
df_list <- lapply(1:2, read_function)
assign_function <- function(x) {
dataset_name <- str_c("dataset", (x))
assign(dataset_name, df_list[[(x)]], inherits = TRUE)
}
lapply(1:2, assign_function)
我们的想法是读入数据集,将它们存储在列表中,然后为列表的每个元素指定名称并返回环境。