Можно взломать решение в соответствии с тем, что у вас есть выше, но вы, вероятно, этого не хотите. Какова ваша цель?
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" ...
s/часто не очень оптимальна/часто ужасная идея –
Моя идея состояла в том, чтобы извлечь и повторно -комбинация столбцов существующего фрейма данных для определенной цели. Eg: Я нахожу столбцы data.frame(), которые являются результатом импорта из инструкции read.csv(), иногда столбцы Date считаются как Класс символов. Другая причина заключается в том, что мне просто нужно всего несколько столбцов из data.frame(), созданного из инструкции read.csv. Я не понимал, что инициализированный data.frame(), который был инициализирован перед циклом for, должен быть заполнен вектором столбца с длиной строки, равной длине любых объектов, обработанных cbind() позже – Vni