2012-03-29 3 views

ответ

3

Возможно, по какой-то причине R сказал вам, что это пошло не так: два предмета, которые вы пытаетесь сделать cbind вместе, имеют разные количества строк.

Ваш фрейм данных d является emtpy, и поэтому имеет 0 строк. По-видимому, ваш фрейм данных data (которому вы предоставили нам нулевую информацию, кстати) имеет 132680 строк.

Возможно, лучший способ сделать то, что вы пытаетесь (cbind). Столбцы в цикле for часто бывают не очень оптимальны), но предложить решение можно без подробностей.

+1

s/часто не очень оптимальна/часто ужасная идея –

+0

Моя идея состояла в том, чтобы извлечь и повторно -комбинация столбцов существующего фрейма данных для определенной цели. Eg: Я нахожу столбцы data.frame(), которые являются результатом импорта из инструкции read.csv(), иногда столбцы Date считаются как Класс символов. Другая причина заключается в том, что мне просто нужно всего несколько столбцов из data.frame(), созданного из инструкции read.csv. Я не понимал, что инициализированный data.frame(), который был инициализирован перед циклом for, должен быть заполнен вектором столбца с длиной строки, равной длине любых объектов, обработанных cbind() позже – Vni

0

Можно взломать решение в соответствии с тем, что у вас есть выше, но вы, вероятно, этого не хотите. Какова ваша цель?

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" ... 
Смежные вопросы