genes$start <- as.numeric(genes$start) Error in `$<-.data.frame`(`*tmp*`, start, value = numeric(0)) : 替换数据里有0行,但数据有90
时间: 2024-02-27 18:52:19 浏览: 151
这个错误提示是因为你正在尝试将一个长度为0的向量赋值给`genes$start`这一列,而`genes`数据框的行数为90。这可能是因为你在将`genes$start`转换为数值类型时出现了问题。
你可以尝试使用`as.integer()`函数或者`as.double()`函数将`genes$start`转换为整数或双精度数,具体使用哪个函数取决于你的数据类型。例如:
```
genes$start <- as.integer(genes$start)
# 或者
genes$start <- as.double(genes$start)
```
如果在转换时出现了错误,有可能是`genes$start`中存在非数字的值。你可以使用`grep()`函数或者`is.na()`函数找出非数字的值:
```
# 找出非数字的值
non_numeric <- grep("[^[:digit:]]", genes$start)
# 或者
non_numeric <- is.na(as.numeric(genes$start))
# 将非数字的值替换为NA
genes$start[non_numeric] <- NA
```
然后再使用`as.integer()`或者`as.double()`函数进行转换就应该可以了。
相关问题
> genes <- read.table("genes.tsv", header = TRUE) > row.names(genes) <- genes$ENSGeneID > genes <- genes[,-1] > barcodes <- read.table("barcodes.tsv") > colnames(barcodes) <- "cell_id" > mtx <- readMM("matrix.mtx") > exp_mtx <- as.data.frame(as.matrix(mtx)) > rownames(exp_mtx) <- rownames(genes[match(rownames(exp_mtx), rownames(genes)),]) Error in genes[match(rownames(exp_mtx), rownames(genes)), ] : 量度数目不对,是什么错误
这个错误可能是由于 `genes` 和 `exp_mtx` 的行数不匹配导致的。可以尝试检查一下 `genes.tsv` 文件中的基因数量是否与 `matrix.mtx` 文件中的基因数量一致,或者检查一下是否存在重复的基因。如果有重复的基因,需要对其进行去重操作。另外,还可以查看一下 `matrix.mtx` 文件中的基因是否都在 `genes.tsv` 文件中出现。
> genes <- fread("genes.tsv") > barcodes <- fread("barcodes.tsv") > mtx <- readMM("matrix.mtx") > mat <- as.matrix(mtx) > df <- as.data.table(mat) > setnames(df, colnames(df), barcodes$V1) Error in setnames(df, colnames(df), barcodes$V1) : 'new' 既不是特征向量也不是 function有什么错误
这个错误是因为你使用了 `setnames` 函数,它的第三个参数应该是一个字符向量,表示你想要修改的列名。但是你传递了一个单个的变量 `barcodes$V1`,这显然不是一个字符向量。
你可以尝试将 `barcodes$V1` 转换为字符向量,例如:
```
setnames(df, colnames(df), as.character(barcodes$V1))
```
这应该可以解决你遇到的错误。
阅读全文