2013-09-23 2 views
-1

Есть объекты с основным DATAS как a<-list(a=1,b="A",c=character())создать data.frame из разного количества строк

Теперь я хочу преобразовать его в data.frame, но там мне нужно равные строкам. Как заполнить пустые векторы NA простым способом запускать as.data.frame(a)? единственная Идея, которую я имею, - спросить, имеет ли один элит из списка длину < 1, затем установите element[1]=NA.

+0

Хорошо, я вижу data.frame (t (a)), это хороший способ, но как заменить пустые строки на NA или как спросить, имеет ли строка в кадре данных пустую запись? Позже мне нравится иметь функциональность, которую я получаю для 'na.omit (df)'. – Klaus

+0

Можем ли мы помочь вам найти источники базового использования в 'R'? Этот вопрос подсказывает, что вы не знакомы с простыми функциями, такими как length (a [[1]]) или 'a [[2]] [5: length (a [[1]]) <- NA ' –

+0

@CarlWitthoft, sry Я ищу только лучший способ выразить' b <-lapply (a, function (x) if (length (x) <1) NA else x); data.frame (b) '. – Klaus

ответ

1

Я не уверен, что это чище, но это избавиться от if вещи:

lfoo<-list(one=1:3,two=character(),three=4:6,four=vector()) 
dfoo<-dfoo<-data.frame(one=rep(NA,3),two=rep(NA,3), three=rep(NA,3),four=rep(NA,3)) 
lvalues <- which(unlist(lapply(1:4,function(x) length(lfoo[[x]]) > 0)) 
for (j in lvalues) dfoo[,jvalues]<-lfoo[[jvalues]] 

Это может указать вам на простые способы борьбы с преобразованиями и выборочными заменами.

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