Ошибка в eval () при использовании randomForest в R - PullRequest
1 голос
/ 29 мая 2020

Я пытаюсь использовать команду randomForest

У меня есть разреженная матрица, называемая counts, данных выражения с одной ячейкой, и другая переменная, identity, которая имеет тип ячейки

counts <- t(as.matrix(CountsMatrix))

names(counts) <- make.names(names(counts))

smp_size <- floor(nrow(counts)*0.7)
train_ind <- sample(c(1:nrow(counts)), smp_size)

x_train <- counts[train_ind,]
x_test <- counts[-train_ind,]

y_train <- identity[train_ind]
y_test <- identity[-train_ind]

train_set <- cbind(data.frame(Identity = y_train), as.data.frame(x_train))
forest <- randomForest(Identity ~., data = train_set)

Я собрал все данные во фрейм данных, и строка names(counts) <- make.names(names(counts)) была добавлена ​​из моих попыток исправить мою ошибку.

При запуске этого кода я получаю сообщение об ошибке «Ошибка в eval (predvars, data, env): object '0610005C13Rik' not found ".

Мои данные содержат 16519 столбцов с именем, похожим на 0610005C13Rik, и я не знаю, как переименовать их все, если это проблема.

1 Ответ

0 голосов
/ 29 мая 2020

Давайте попробуем с некоторым примером набора данных, избегая использования имен функций в качестве переменных, идентификатор - это функция, поэтому:

library(randomForest)
library(Seurat)
CountsMatrix = pbmc_small[["RNA"]]@data
ident = factor(as.numeric(Idents(pbmc_small)==1))

Просто поместите его:

fit = randomForest(ident ~ .,data=cbind(ident,counts))
Error in eval(predvars, data, env) : object 'HLA-DRA' not found

Здесь мы используем make.names как у вас:

counts <- t(as.matrix(CountsMatrix))
names(counts) <- make.names(names(counts))

У вас есть матрица, names () не работает. Мы можем посмотреть на это:

head(names(counts))
[1] NA NA NA NA NA NA 

Это имена столбцов, которые вам нужно исправить:

colnames(counts) <- make.names(colnames(counts))

smp_size <- floor(nrow(counts)*0.7)
train_ind <- sample(c(1:nrow(counts)), smp_size)

x_train <- counts[train_ind,]
x_test <- counts[-train_ind,]

y_train <- ident[train_ind]
y_test <- ident[-train_ind]

train_set <- cbind(data.frame(Identity = y_train), as.data.frame(x_train))
forest <- randomForest(Identity ~., data = train_set)

Или вы можете просто сделать:

forest <- randomForest(x=x_train,y=y_train)
...