У меня проблемы с преобразованием моих типов данных.
В настоящее время у меня есть матрица с 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 столбца. Здесь вся матрица преобразуется в символ, и я застреваю, пытаясь преобразовать обратно.
Любая помощь будет принята с благодарностью, застрял в этом на некоторое время!
apply
, первый аргумент приводится к матрице. Используйтеlapply
, чтобы определить класс фреймов данных. - person IRTFM   schedule 18.10.2013which(pairMatrix[,15] == 0)
(с pairMatrix теперь фактически фрейм данных). Когда я выполнил эту операцию, прежде чем она работала, найдите, но теперь она возвращаетinteger (0)
. Я не уверен, что вам, возможно, придется использовать другую операцию с фреймами данных? Еще раз спасибо! - person Mike   schedule 18.10.2013df <- 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