我想从一个字符向量创建一个对象。举例来说:
v <- c("ind1_2015", "ind1_2016", "ind1_2017") for (ind in v) { ind <- readRDS(paste0(ind, ".RDS")) }
字符串所以在最后,我希望有3个 Dataframe ,每个 Dataframe 称为ind1_2015,ind1_2016和ind1_2017。我如何才能做到这一点?
jxct1oxe1#
在R中,这与Python不同或类似。初始化一个命名列表,但循环遍历(数字)索引。
for (i in seq_along(v)) { ind[[i]] <- readRDS(paste0(v[[i]], ".rds")) } ind # $ind1_2015 # X1 X2 X3 X4 # 1 1 4 7 10 # 2 2 5 8 11 # 3 3 6 9 12 # # $ind1_2016 # X1 X2 X3 X4 # 1 1 4 7 10 # 2 2 5 8 11 # 3 3 6 9 12 # # $ind1_2017 # X1 X2 X3 X4 # 1 1 4 7 10 # 2 2 5 8 11 # 3 3 6 9 12
字符串或者使用lapply
lapply
ind <- lapply(setNames(v, v), \(x) readRDS(paste0(x, '.rds')))
型要“解包”列表,请使用list2env(ind, .GlobalEnv)获取单个 Dataframe (不一定推荐)。
list2env(ind, .GlobalEnv)
ind1_2015 <- ind1_2016 <- ind1_2017 <- data.frame(matrix(1:12, 3, 4)) lapply(c("ind1_2015", "ind1_2016", "ind1_2017"), \(x) saveRDS(get(x), paste0(x, '.rds')))
型
z18hc3ub2#
可以使用assign:
assign
v <- c("ind1_2015", "ind1_2016", "ind1_2017") for(ind in v) { assign(ind, data.frame(v = ind)) }
字符串
q35jwt9p3#
这里可以使用assign,在本例中,生成三个 Dataframe ,分别称为df_ind1_2015、df_ind1_2016和df_ind1_2017:
df_ind1_2015
df_ind1_2016
df_ind1_2017
v <- c("ind1_2015", "ind1_2016", "ind1_2017") for(ind in v) { value <- readRDS(paste0(ind, ".RDS")) assign(x = paste0("df_", ind), value = value) }
3条答案
按热度按时间jxct1oxe1#
在R中,这与Python不同或类似。初始化一个命名列表,但循环遍历(数字)索引。
字符串
或者使用
lapply
型
要“解包”列表,请使用
list2env(ind, .GlobalEnv)
获取单个 Dataframe (不一定推荐)。型
z18hc3ub2#
可以使用
assign
:字符串
q35jwt9p3#
这里可以使用
assign
,在本例中,生成三个 Dataframe ,分别称为df_ind1_2015
、df_ind1_2016
和df_ind1_2017
:字符串