last_col <- cbind(last_col, gse_exp[, -ncol(gse_exp)]) 错误于data.frame(..., check.names = FALSE): 参数值意味着不同的行数: 0, 50352
时间: 2024-09-29 19:07:06 浏览: 16
这个错误通常表示你在尝试合并两个数据集时,它们的行数(即观测次数)不匹配。在这个上下文中,`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 ]
R将gse_exp中列名为Gene.Symbol的列设为第一列
在R中,如果你想将`gse_exp`数据框中的列名为`Gene.Symbol`的列设置为新的第一列,可以使用`select()`函数从`dplyr`包(如果你没有安装,先安装:`install.packages("dplyr")`),或者直接使用原生的`data.frame`操作,例如`cbind()`函数结合子集操作。这里有一个示例:
使用`dplyr`包的方式:
```r
library(dplyr)
gse_exp <- gse_exp %>%
select(Gene.Symbol, everything()) %>%
slice(1)
# 如果`Gene.Symbol`已经是第一列,则不需要`slice(1)`
```
如果`Gene.Symbol`原本就是数据框的第一列,那么上述代码会将其他所有列移动到`Gene.Symbol`之后。
原生`data.frame`操作的方式:
```r
gse_exp <- cbind(gse_exp$Gene.Symbol, gse_exp[-which(names(gse_exp) == "Gene.Symbol"), ])
```
这将把`Gene.Symbol`复制到最前面,然后把剩下的列连接在一起。