Как указано выше .. a matrix
в R может хранить только значения одного и того же типа во всех столбцах. Вы не можете изменить некоторые значения на числовые и оставить некоторые другие в качестве символов. Если вам нужны разные типы данных, вы можете использовать data.frame
, но даже тогда вы можете иметь только один тип данных для каждого столбца.
Для примера случай:
df2 <- as.data.frame(matrix(as.character(1:9),3,3))
создаст data.frame с factor
сек в каждом столбце. Если вы хотите, чтобы преобразовать второй столбец numeric
, вы можете сделать:
df2$V2 <- as.numeric(levels(df2$V2))[df2$V2]
Или
df$V2 <- as.numeric(as.character(df2$V2))
Так что вам не нужно использовать apply
в этом случае.
str(df2)
#'data.frame': 3 obs. of 3 variables:
# $ V1: Factor w/ 3 levels "1","2","3": 1 2 3
# $ V2: num 4 5 6
# $ V3: Factor w/ 3 levels "7","8","9": 1 2 3
Если вы хотите, чтобы преобразовать все столбцы в цифровой, вы можете сделать:
# if the columns were factors before:
df2[] <- lapply(df2, function(i) as.numeric(levels(i))[i])
Или
# if the columns were characters before:
df2[] <- lapply(df2, as.numeric)
Матрица в R может содержать только значения одного и того же типа. Вы не можете изменить некоторые значения на числовые и оставить некоторые другие в качестве символов. Если вам нужны разные типы данных, вы можете использовать data.frame, но даже тогда вы можете иметь только один тип данных для каждого столбца. –
Просто 'df2 <- data.frame (df2, strAsAsFactors = F)' после вашей первой строки. – nrussell