2016-11-09 3 views
1

У меня есть список имен столбцов, такие какИнициализация фрейма данных с колоннами из списка имен в R

names = c("a","b") 

Я хотел бы сделать пустой фрейм данных с именами столбцов, взятых из names, с 1 строкой, где все значения: NA.

"a" "b" 
NA NA 

Я пытался что-то вроде этого:

d = data.frame() 
for(i in seq(1,length(names))) { 
d[,toString(names[i])] = NA 
} 

Не похоже на работу

+2

Try 'data.frame (setNames (Rep (список (NA), длина (имена)) , имена)) ' – akrun

+0

Отлично работает, спасибо. – CodeGuy

ответ

1

Мы можем replicate НС по length из names в list, установить имена из list с names и конвертировать в data.frame

data.frame(setNames(rep(list(NA), length(names)), names)) 

Или другой вариант read.csv

read.csv(text=paste(rep(NA, length(names)), collapse=","), 
        header=FALSE,col.names = names) 
1

Это также будет делать:

df <- as.data.frame(matrix(rep(NA, length(names)), nrow=1)) 
names(df) <- names 
+0

изменение темы ... 'as.data.frame (matrix (NA, ncol = length (names), dimnames = list (NULL, names)))' – user20650

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