diff --git a/components/board.upload/R/upload_module_preview_counts.R b/components/board.upload/R/upload_module_preview_counts.R index f2453ecba..76f1c5250 100644 --- a/components/board.upload/R/upload_module_preview_counts.R +++ b/components/board.upload/R/upload_module_preview_counts.R @@ -385,6 +385,7 @@ upload_table_preview_counts_server <- function(id, } # Load data once and cache both data frames and column names + samples_cache <- list() data_cache <- list() col_lists <- list() file_names <- character() @@ -403,6 +404,7 @@ upload_table_preview_counts_server <- function(id, } else { df <- pgx_data$counts } + samples_cache[[i]] <- pgx_data$samples data_cache[[i]] <- df col_lists[[i]] <- colnames(df) file_names[i] <- dataset @@ -481,6 +483,16 @@ upload_table_preview_counts_server <- function(id, df <- df[, common_cols, drop = FALSE] combined_df <- rbind(combined_df, df) } + + # Combine samples_cache by intersecting rownames (only for pgx multi-omics upload) + if (length(samples_cache) > 0) { + # Find common rownames in all sample files (no prefixing!) + rownames_list <- lapply(samples_cache, rownames) + common_rows <- Reduce(intersect, rownames_list) + combined_samples <- samples_cache[[1]][common_rows, , drop = FALSE] + uploaded$samples.csv <- combined_samples + } + uploaded$counts.csv <- combined_df })