Возможно взломать решение в соответствии с тем, что у вас есть выше, но вы, вероятно, не хотите. Какова ваша цель здесь?
d <- data.frame(matrix(ncol=0,nrow=5),stringsAsFactors=FALSE)
set.seed(101)
dat <- matrix(sample(LETTERS,replace=TRUE,size=10),ncol=2)
for (i in 1:ncol(dat)) { d <- cbind(d,dat[,i])}
d2 <- as.data.frame(dat,stringsAsFactors=FALSE)
В этом конкретном примере dat
представляет собой матрицу character
; d
- это фрейм данных с двумя factor
столбцами ( примечание , что stringsAsFactors=FALSE
не не устанавливает атрибут фрейма данных, поэтому ваши последующие вызовы cbind()
вызывают преобразование в любом случае фактор!); и d2
возможно (???) то, что вы хотели, исходный набор данных преобразован в фрейм данных ...
> str(dat)
chr [1:5, 1:2] "J" "B" "S" "R" "G" "H" "P" "I" "Q" "O"
> str(d)
'data.frame': 5 obs. of 2 variables:
$ dat[, i]: Factor w/ 5 levels "B","G","J","R",..: 3 1 5 4 2
$ dat[, i]: Factor w/ 5 levels "H","I","O","P",..: 1 4 2 5 3
> str(d2)
'data.frame': 5 obs. of 2 variables:
$ V1: chr "J" "B" "S" "R" ...
$ V2: chr "H" "P" "I" "Q" ...