我想将for循环创建的所有列表对象保存为环境中的不同数据集,并使用其专有名称,例如gapminder_Asia, gapminder_Europe,..etc.
。
library(gapminder)
cont <- unique(gapminder$continent)
df <- NULL
for(i in 1:(length(cont))) {
temp <- gapminder[gapminder$continent == cont[i], ]
colnames(temp) <- paste0(paste(cont[i]))
df[[i]] <- temp
}
df
预期的答案,
> unique(gapminder$continent)
[1] Asia Europe Africa Americas Oceania
head(gapminder_Asia)
1 Afghanistan Asia 1952 28.8 8425333 779.
2 Afghanistan Asia 1957 30.3 9240934 821.
3 Afghanistan Asia 1962 32.0 10267083 853.
4 Afghanistan Asia 1967 34.0 11537966 836.
5 Afghanistan Asia 1972 36.1 13079460 740.
我个人更喜欢将数据集保存在列表中,例如使用split
,但如果你想要的结果是有不同的命名对象,那么你可以通过assign
:
library(gapminder)
df <- split(gapminder, gapminder$continent)
for(i in names(df)) {
assign(paste("gapminder", i, sep = "_"), df[[i]])
}
gapminder_Africa
#> # A tibble: 624 × 6
#> country continent year lifeExp pop gdpPercap
#> <fct> <fct> <int> <dbl> <int> <dbl>
#> 1 Algeria Africa 1952 43.1 9279525 2449.
#> 2 Algeria Africa 1957 45.7 10270856 3014.
#> 3 Algeria Africa 1962 48.3 11000948 2551.
#> 4 Algeria Africa 1967 51.4 12760499 3247.
#> 5 Algeria Africa 1972 54.5 14760787 4183.
#> 6 Algeria Africa 1977 58.0 17152804 4910.
#> 7 Algeria Africa 1982 61.4 20033753 5745.
#> 8 Algeria Africa 1987 65.8 23254956 5681.
#> 9 Algeria Africa 1992 67.7 26298373 5023.
#> 10 Algeria Africa 1997 69.2 29072015 4797.
#> # … with 614 more rows
由reprex包(v2.0.1)于2018-10-16创建