last_col <- cbind(last_col, gse_exp[, -ncol(gse_exp)]) 错误于data.frame(..., check.names = FALSE): 参数值意味着不同的行数: 0, 50352
时间: 2024-09-29 19:07:06 浏览: 52
这个错误通常表示你在尝试合并两个数据集时,它们的行数(即观测次数)不匹配。在这个上下文中,`last_col <- cbind(last_col, gse_exp[, -ncol(gse_exp)])`这句话的意思是把`last_col`和`gse_exp`除了最后一列的部分结合在一起。如果`last_col`是一个空数据框(行数为0),而`gse_exp[, -ncol(gse_exp)]`包含50352行,那么`cbind`会因为这两个对象的行数不一致而抛出错误。
解决这个问题,你需要确认`last_col`是否已经有一个与`gse_exp`其余列长度相同的列,或者是为空的数据框。如果是后者,需要先创建一个与`gse_exp`相同行数的`NULL`列,或者填充一些默认值,然后再尝试进行组合。例如:
```r
if (nrow(last_col) == 0) {
last_col <- data.frame(matrix(NA, ncol = ncol(gse_exp) - 1, nrow = nrow(gse_exp)))
# 或者
# last_col <- replicate(nrow(gse_exp), list(), simplify = FALSE)
}
last_col <- cbind(last_col, gse_exp[, -ncol(gse_exp)])
```
这里假设`gse_exp`有50352行。
相关问题
修改以下代码,只展示热图的一半:df <- read_excel("Merge_18.UMAP_celltypes_num_type.xlsx", sheet = "Proportion") df # 仅选择数值型的列 numeric_columns <- sapply(df, is.numeric) df_numeric <- df[, numeric_columns] # 计算斯皮尔曼相关系数 spearman_corr <- cor(df_numeric, method = "spearman") # 保留两位小数的相关系数 formatted_corr <- format(round(spearman_corr, 2), nsmall = 2) # 绘制斯皮尔曼相关系数热图 pdf("Merge_18.UMAP_celltypes_num_type_spearman_corr_heatmap.pdf", width = 8, height = 8) heatmap.2(spearman_corr, trace = "none", col = colorRampPalette(c("#FFFFFF","#F8FCCB", "#FCA86B"))(100), cellnote = formatted_corr, notecol = "black") dev.off()
要修改代码以展示热图的一半,你可以使用以下代码:
```R
df <- read_excel("Merge_18.UMAP_celltypes_num_type.xlsx", sheet = "Proportion")
df_numeric <- df\[, sapply(df, is.numeric)\]
spearman_corr <- cor(df_numeric, method = "spearman")
formatted_corr <- format(round(spearman_corr, 2), nsmall = 2)
half_spearman_corr <- spearman_corr\[1:(ncol(spearman_corr)/2), \]
half_formatted_corr <- formatted_corr\[1:(ncol(formatted_corr)/2), \]
pdf("Merge_18.UMAP_celltypes_num_type_spearman_corr_heatmap.pdf", width = 8, height = 8)
heatmap.2(half_spearman_corr, trace = "none", col = colorRampPalette(c("#FFFFFF","#F8FCCB", "#FCA86B"))(100),
cellnote = half_formatted_corr, notecol = "black")
dev.off()
```
这段代码首先读取Excel文件中的数据,并选择数值型的列。然后计算斯皮尔曼相关系数,并保留两位小数的相关系数。接下来,我们将相关系数矩阵的一半提取出来,以便只展示热图的一半。最后,使用`heatmap.2`函数绘制热图,并将结果保存为PDF文件。
#### 引用[.reference_title]
- *1* *2* *3* [小鼠参考基因组id转换gtf文件chb 自己注释 从官网下载相应的基因中注释文件gse155802 getmatrix genecode](https://blog.csdn.net/qq_52813185/article/details/127760873)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]
both_gene=intersect(gene1,gene2) gse77298norm <- t(gse77298norm) gse55235norm <- t(gse55235norm) gse55457norm <- t(gse55457norm) expr=rbind(gse77298norm[,both_gene],gse55235norm[,both_gene],gse55457norm[,both_gene]) batch <- paste0("batch", rep(c(1,2,3),c(23,20,23))) tissue <- c(stategse77298,stategse55235,stategse55457) tissue=as.character(tissue) mod <- model.matrix(~tissue) expr <- t(expr) dim(expr) expr_batch <- ComBat(dat = expr, batch = batch, mod = mod)
这段代码是在进行基因表达数据的批次效应校正。首先,对两个基因集合进行交集操作,得到共同的基因。然后,将三个数据集中共同基因的表达矩阵按行合并成一个大的表达矩阵,同时记录每个样本所属的批次和组织类型。接着,使用ComBat算法进行批次效应校正,其中`batch`参数表示批次信息,`mod`参数表示组织类型信息。最后返回校正后的表达矩阵。
阅读全文