r - 在循环中定义动态变量并组合内容
问题描述
我是 R 新手,在双循环中为变量动态分配多个值时无法解决以下问题:
我想生成不同的变量 a) 它们的名称已经存储在 var_names b) 通过循环工作表名称将来自 excel 文件的数据放入其中
假设一个 excel 文件有 3 张;我为这个例子编译了一个;你可以在这里找到它。
var_names <- c("a", "b", "c")
cell_ranges <- c("A1:A2", "B1:B2", "C1:C2")
sheet_names <- c("sheet_1", "sheet_2", "sheet_3")
对于单个变量 x,代码如下所示:
x <- c()
for (sheet in sheet_names) {
x<-c(x, read_excel("file.xls", sheet = sheet, range="cell range that
fits x; e.g., A1:A2"))
}
但我不想对每个变量都这样做;我希望将这些循环作为计算变量,类似于:
for (i in 1:length(cell_ranges)) {
for(sheet in sheet_names){
assign(paste(var_names[i], "", sep=""),
read_excel("file.xls", sheet = sheet,
range=cell_ranges[i]))
}
}
不用说,它不起作用,因为只有最后一张 excel 表中的值存储在相应的变量中。
我试图改变这样的分配代码,但它没有用
assign(paste(var_names[i], "", sep=""),
c(var_names[i],
read_excel("file.xls", sheet = sheet, range=cell_ranges[i])))
如何更改循环以使最终变量包含所有工作表的相应值?使用样本表,结果应该看起来像 a、b 和 c 中的每一个的 3 个列表。我知道成为新人意味着我可能没有足够清楚地表达我的需求;请让我知道,我会尝试更详细地解释。谢谢!
解决方案
诀窍是首先将数据存储在附加变量“a”中,然后使用“a”将数据分配给最终变量
for (i in 1:length(cell_ranges)) {
a <- c()
for(sheet in sheet_names) {
a <- c(a, read_excel("file.xlsx", sheet = sheet,range=cell_ranges[i]))
assign(var_names[i], a)
}
}
推荐阅读
- php - 刀片模板内将编号格式化为 K/M/B
- amazon-web-services - ZOHO deluge 脚本 getUrl() 函数可以读取 HTTP 响应标头吗?
- java - BehaviorSubject 在另一个线程上订阅
- c# - 为什么这个字符串看起来是按值内联存储在显式布局类或结构中的?
- laravel-5 - Laravel 使用 groupBy 选择计数
- ms-access - DoCmd.SetOrderBy 方法 MS Access VBA
- bluetooth - 用ESP32测量蓝牙连接力
- django - 如何使用 Django 自定义模板标签来获取对象的属性?
- python - “如何在 Line-plot 中显示两条线的数据点之间的差异值?”
- javascript - ReactJs - 获取后调用函数