求助:基于R Shiny实现通用heating cycle数据分析程序的变量自动命名
实验室数据分析R程序开发问题
我正在为实验室编写数据分析的R程序,目前遇到了一些卡点:
实验背景:
- 实验基于可多次运行的机器,每次运行周期称为heating cycle(HC)
- 软件会导出含数据表的Word文档,每个数据表对应一个HC的事件
- 实验做三次重复,得到doc1、doc2、doc3三个Word文档,目标是计算对应表格(如表1、表2)的均值
- 已完成固定表格数量的版本,现在要开发R Shiny通用版,支持用户自定义每个文档的表格数量,同时需要做数据清洗
当前已实现的代码:
# 清洗并转换单个值的函数 clean_and_convert <- function(x) { x <- gsub("[°C]", "", x) x <- gsub("[J/g]", "", x) x <- gsub(",", ".", x) return(as.numeric(x)) } # 从表格指定行提取值并应用clean_and_convert extract_values <- function(table, row_index) { # 转换为数据框(如果还不是的话) table_df <- as.data.frame(table) # 删除第一列 table_df <- table_df[, -1, drop = FALSE] # 提取指定行的值 values <- table_df[row_index, , drop = FALSE] # 对每个值应用清洗转换 cleaned_values <- lapply(values, clean_and_convert) # 返回向量 return(unlist(cleaned_values)) } # 从Word文档提取所有表格 extract_tables <- function(doc) { tables <- docxtractr::docx_extract_all_tbls(doc) return(tables) } # 根据用户输入提取并命名向量的函数 extract_and_name_vectors <- function(tables, num_tables, variable_prefix, doc_index) { user_vectors <- list() # 为每个表格提取并命名向量 for (i in seq_len(num_tables)) { # 根据用户输入提取行 extracted_rows <- tables[[i]][seq_len(num_tables), ] # 清洗转换值 cleaned_values <- lapply(extracted_rows, clean_and_convert) # 根据用户输入的前缀创建向量名 vector_names <- paste0(variable_prefix, seq_len(ncol(extracted_rows)), "doc", doc_index) # 将清洗后的值赋值给命名向量 user_vectors[[paste0("table", i, variable_prefix, "doc", doc_index)]] <- setNames( unlist(cleaned_values), vector_names ) } return(user_vectors) } # 提取三个文档的表格并生成值列表 tables_doc1 <- lapply(extract_tables(doc1), function(table) extract_values(table, 2)) tables_doc2 <- lapply(extract_tables(doc2), function(table) extract_values(table, 2)) tables_doc3 <- lapply(extract_tables(doc3), function(table) extract_values(table, 2))
当前卡点
上述代码生成了tables_doc1、tables_doc2、tables_doc3三个值列表,现在需要从这些列表中提取每个表格对应的数据向量,但变量命名规则需要满足:
- 对于doc1,前X个向量(X为用户输入)命名为
HC1doc1,接下来Y个命名为HC2doc1,以此类推 - 该规则要应用到三个文档的所有表格
- 希望自动化批量处理,不要手动写
HC1doc1 <- as.numeric(tables_doc1[[1]])这类代码,要适配不同的表格数量
我是R新手,需要详细易懂的解决方案。
内容的提问来源于stack exchange,提问作者Tom Konings
相关产品推荐
相关产品推荐

