2016-11-18 5 views
1

У меня есть данныеR: `ID: принуждение LHS к списку` при добавлении столбца идентификатора, почему?

 N11.1 N22.2 N33.1 N44.1 N21.1 N31.1 N32.1 
Sinus  1  0  0 0.0  0  0 12.0 
ArrAHB  1  0  0 0.1  0  0 20.9 

, где я хочу, чтобы добавить дополнительный столбец ID со значениями Sinus и ArrAHB.

require(lattice) 
Sinus<-c(1,0,0,0,0,0,12) 
ArrAHB<-c(1,0,0,0.1,0,0,20.9) 
Labels<-c("N11.1","N22.2","N33.1","N44.1","N21.1","N31.1","N32.1") 
ID<-c("Sinus","Arr/AHB") 
data.female<-data.frame(Sinus,ArrAHB,row.names=Labels) 
data.female<-t(data.female) 

> data.female$ID<-ID 

Warning message: 
In data.female$ID <- ID : Coercing LHS to a list 

Почему создание столбца ID вызвать принуждение в data.frame?

P.s. Моя цель состоит в том, чтобы получить эти данные в форме, например here, для barchart(N11.1+N22.1+N33.1+N44.1+N21.1+N31.1+N32.1 ~ ID, data=data.female), для которой требуется новый столбец ID here, я не могу понять, почему это добавление ID иногда срабатывает, а иногда и нет. Пожалуйста, объясни.

+2

't' возвращает матрицу. Вы не можете использовать '$ <-' для назначения в матрицу. Таким образом, R заставляет матрицу в список. Вы, вероятно, приближаетесь к этому неоптимальным образом, но я не уверен, как должен выглядеть сюжет и, следовательно, не может предложить хорошую альтернативу. – Roland

ответ

3

Это предупреждение, так как результаты транспонирования t() являются матрицей. Матрицы не имеют доступных имен столбцов. Вы должны принудить матрицу к кадру данных, прежде чем выполнять присвоение идентификатора, используя as.data.frame()

Это работает.

Sinus<-c(1,0,0,0,0,0,12) 
ArrAHB<-c(1,0,0,0.1,0,0,20.9) 
Labels<-c("N11.1","N22.2","N33.1","N44.1","N21.1","N31.1","N32.1") 
ID<-c("Sinus","Arr/AHB") 
data.female<-data.frame(Sinus,ArrAHB,row.names=Labels) 
data.female<-as.data.frame(t(data.female)) 

data.female$ID<-ID 

Помните, что фреймы данных определяются по столбцам, а не по строкам. Определение фрейма данных должно быть по столбцам.

+0

Спасибо, просто и работает +1 – hhh

 Смежные вопросы

  • Нет связанных вопросов^_^