Я пытаюсь использовать применить функцию в r вместо для-l oop для заполнения матрицы двумя пустые столбцы:
cellName genesNum genesSum oneUMI
1 c1 NA 1917 NA
2 c2 NA 7143 NA
3 c3 NA 2063 NA
4 c4 NA 1733 NA
5 c5 NA 1876 NA
6 c6 NA 1800 NA
Итак, я переписал это:
for(i in 1:ncol(countMatrix)){
vec <- countMatrix[,i]
coldata$genesNum[coldata$cellName == colnames(countMatrix)[i]] <- length(vec[vec > 0])
coldata$oneUMI[coldata$cellName == colnames(countMatrix)[i]] <- length(vec[vec == 1])
}
к этому:
fillColData <- function(nameColumn){
vec <- countMatrix[, nameColumn]
coldata$genesNum[coldata$cellName == nameColumn] <- length(vec[vec > 0])
coldata$oneUMI[coldata$cellName == nameColumn] <- length(vec[vec == 1])
}
, и я использую as.matrix(mapply(fillColData, colnames(countMatrix)))
. Но вместо этого иметь полностью заполненную матрицу, подобную этой:
cellName genesNum genesSum oneUMI
1 c1 934 1917 674
2 c2 2346 7143 1407
3 c3 1046 2063 747
4 c4 904 1733 628
5 c5 939 1876 673
6 c6 981 1800 719
У меня есть только последний столбец:
[,1]
c1 674
c2 1407
c3 747
c4 628
c5 673
c6 719
Я не понимаю почему, потому что итеративно это правильно. Может кто-то мне помочь, пожалуйста? Спасибо.