我有 100 个名称为 pattern 的数据框product_<region>。这些名称存储在 vector 中names。
我想检查它们,但我不想输入print(product_<region>, n = 10)100 次。
我试过了
for (name in names) {
print(paste0("product_", name), n = 10)
}
Run Code Online (Sandbox Code Playgroud)
但这不起作用,因为 的输出paste0()是一个字符串——它不是数据框本身。
如何使用其名称作为字符串检索数据框?
names因为它与names(x).get(x)从文本字符串中检索变量。print()它不是有一个n=参数。相反,使用head(x)来查看data.frame第一个n = 6L观察结果(或tail(x)最后一个观察结果n = 6L)。print(x, n=10)作为结果的使用然后触发:
print.default(m, ..., quote = quote, right = right) 中的错误:
无效的“na.print”规范
for (region in regions) {
print(head(get(paste0("product_", region)), n = 10))
}
Run Code Online (Sandbox Code Playgroud)
生成一些示例数据:
regions = c("chicago","detroit")
set.seed(11)
for(region in regions){
d = data.frame(a = rnorm(10), b = rnorm(10))
assign(paste0("product_",region), d)
}
Run Code Online (Sandbox Code Playgroud)
输出:
数据集 1:
a b
1 -1.63651631 0.7898706
2 0.02038144 -0.2299939
3 0.89174268 -0.8185025
4 -0.87274968 0.4997342
5 0.89005083 0.1591923
6 -0.34387435 0.5426264
7 -2.18678137 -0.1566451
8 0.88005818 0.4387933
9 0.72385656 1.4878706
10 0.21985268 0.0601651
Run Code Online (Sandbox Code Playgroud)
数据集 2:
a b
1 -0.8490129 0.4534761
2 2.3396931 -0.1234337
3 -0.1212030 -0.7630968
4 -1.9502074 0.2282701
5 0.5387115 1.1194619
6 1.6935148 0.1565732
7 -0.7909682 -0.6887721
8 -1.0752606 0.4529496
9 -0.6078751 -1.0675467
10 0.7544017 0.4015651
Run Code Online (Sandbox Code Playgroud)