Я легкий, когда дело доходит до R, и я пытаюсь использовать пакет под названием Seurat. Я узнал, что с помощью read.matrix можно читать не матричные данные с 10x разреженными рыночными данными (файлы .mtx) и что имена строк и столбцов можно загружать из связанных csv-файлов. Однако в именах строк и столбцов должны быть удалены определенные c символы (все, что не является alphanumeri c, dot или da sh). Я хотел бы заменить «плохие персонажи» тире. И я хотел бы сделать это в R, чтобы я мог сохранить дисковое пространство, занимаемое моими результатами, маленьким.
Я смотрел на справку read.matrix do c, и, похоже, вы можете установить параметр с именем filter.fn (который, как я понимаю, является функцией, хотя это явно не указано), чтобы «очистить» имена строк и столбцов.
Я узнал, как создать функцию, и получил ее принять row.ids и col.ids в качестве аргументов. Я узнал, как использовать классы символов, чтобы делать замены в строках, содержащихся там (и мои тесты показывают, что он делает то, что я хочу). Но так как функции возвращают только 1 значение или набор, я не уверен, что возвращать. Я попытался вернуть c(row.ids, col.ids)
, но это создает одномерный набор. Даже если я пойму, как вернуть набор 2D, я не уверен, что это то, что нужно. Я пытался увидеть, сохраняются ли изменения в представленных переменных, но это не так. И я не знаю, что искать, чтобы решить эту проблему.
Вот что у меня так далеко:
coldata <- read.csv(file="cell_metadata.csv", header=TRUE, sep=",")
colnames <- paste(coldata$cell_barcode)
rowdata <- read.csv(file="genes.csv", header=TRUE, sep=",")
rownames <- paste(rowdata$genome, rowdata$gene_id, rowdata$gene_name, sep = ".")
cleanrowscols <- function(row.ids, col.ids) {
row.ids <- gsub("[^[:alnum:\\\\-\\\\.] ]", "-", row.ids)
col.ids <- gsub("[^[:alnum:\\\\-\\\\.] ]", "-", col.ids)
return(1)
}
read.matrix("DGE.mtx", header = TRUE, skip = 1, row.ids = rownames,
col.ids = colnames, colClasses = c("numeric", "numeric", "numeric"),
assign.fn = assign_matrix_dense, filter.fn = cleanrowscols)
Но что нужно вернуть cleanrowscols, чтобы заставить его убрать имена строк и столбцов, переданные в read.matrix?
ОБНОВЛЕНИЕ : Тьфу, R даже не знает, что такое read.matrix, и я не знаю, как его импортировать. Так что, возможно, другой курс. Я обнаружил, что library("Matrix")
имеет readMM(file)
, поэтому я попытался readMM("DGE.mtx")
, и это, кажется, работает. Как установить имена строк и столбцов?