Преобразование символа в число в матрице

У меня проблемы с преобразованием моих типов данных.
В настоящее время у меня есть матрица с 29 столбцами, и я хотел бы, чтобы первые 25 были числовыми, а последние 4 - символьными.

Я попытался преобразовать матрицу в фреймворк, используя

pairMatrix = as.data.frame(pairMatrix)

а затем преобразование числа в символ с помощью

pairMatrix[,25:29] = as.character(as.numeric(pairMatrix[,25:29]))

Однако, когда я проверяю типы данных с помощью apply(pairMatrix,2,class), я понимаю, что все они по-прежнему числовые.

Просто чтобы дать вам некоторый контекст относительно моего кода:

pairMatrix = matrix(0,nrow = 200,ncol = 29)  #numeric matrix  

... Некоторые числовые вычисления в первых 25 столбцах ...

pairMatrix[bothsides,26] = paste(rownames(decisionMatrix[bothsides,]),
                                 "a",decisionMatrix[bothsides,9],sep ="")

Где последний бит кода пытается добавить символьные значения в последние 4 столбца. Здесь вся матрица преобразуется в символ, и я застреваю, пытаясь преобразовать обратно.

Любая помощь будет принята с благодарностью, застрял в этом на некоторое время!


person Mike    schedule 18.10.2013    source источник
comment
Как насчет преобразования вашей матрицы в data.frame перед добавлением символьных столбцов?   -  person Sophia    schedule 18.10.2013
comment
ВСЕ ЭЛЕМЕНТЫ МАТРИЦЫ В ОДНОМ РЕЖИМЕ! И если вы используете apply, первый аргумент приводится к матрице. Используйте lapply, чтобы определить класс фреймов данных.   -  person IRTFM    schedule 18.10.2013
comment
@Sophia Спасибо за ответы! Я преобразовал в фрейм данных, проверил типы с помощью lapply и обнаружил, что преобразования были правильными. Не могли бы вы помочь мне с проблемой, связанной с фреймами данных? У меня есть следующий код: which(pairMatrix[,15] == 0) (с pairMatrix теперь фактически фрейм данных). Когда я выполнил эту операцию, прежде чем она работала, найдите, но теперь она возвращает integer (0). Я не уверен, что вам, возможно, придется использовать другую операцию с фреймами данных? Еще раз спасибо!   -  person Mike    schedule 18.10.2013
comment
Ваш код должен работать, см. Этот пример: df <- data.frame(a=1:3, b=c("a","b","c")) which(df[,1]==3) Но посмотрите результат which(df[,1]==4), поэтому, возможно, нет записи с 0 в столбце 15 вашего фрейма данных   -  person Sophia    schedule 18.10.2013
comment
@Sophia, в этом столбце есть нули. Если я применяю один и тот же код к одному и тому же набору данных, когда это матрица, кажется, что он работает. Не волнуйтесь, я нашел другой способ решения проблемы без конвертации. Спасибо за вашу помощь!   -  person Mike    schedule 18.10.2013


Ответы (1)


Ответила @Sophia.

Ее решение: как насчет преобразования вашей матрицы в data.frame перед добавлением символьных столбцов?

person Mike    schedule 29.10.2013