2010-04-01 3 views
1

Я хотел бы создать в функции букет для создания data.frame с переменным числом столбцов.Как создать data.frame с неопределенным количеством столбцов?

что-то вроде:

a = c("a","b") 
b = c(list(1,2,3), list(4,5,6)) 
data.frame(a,b) 

Я хотел бы получить данные кадр, как:

a 1 2 3 
b 4 5 6 

Вместо того, я получаю:

a 1 2 3 4 5 6 
b 1 2 3 4 5 6 

Спасибо!

PS: Я также попробовать с rbind, но это не работает ...

+0

Действительно ли 'a' представляет имена столбцов или строк? – Shane

ответ

3

У вас есть 2 списка в б удерживаемых в качестве отдельных переменных?

В этом случае вы можете использовать:

x<-data.frame(rbind(b1,b2)) 
rownames(x)<-a 
6

Есть много способов сделать такого рода вещи. Ваша первая проблема заключается в том, что ваш объект «b» не является матрицей. Вы должны определить его как один с строками и столбцами (или с помощью rbind).

Вы можете создать кадры данных, а затем объединить их (это лучше, чем работать с матрицей для начала, поскольку она будет поддерживать каждый тип объектов как числовой или символ и т. Д., В то время как матрица потеряет это):

x1 <- data.frame(X=c("a","b")) 
x2 <- data.frame(rbind(c(1,2,3), c(4,5,6))) 
data.frame(x1, x2) 
    X X1 X2 X3 
1 a 1 2 3 
2 b 4 5 6 

Если x1 для rownames, то вы должны последовать примеру Джеймса:

x2 <- data.frame(rbind(c(1,2,3), c(4,5,6))) 
rownames(x2) <- c("a","b") 
2

другой способ

a = c("a","b") 
b = list(c(1,2,3), c(4,5,6)) 

library(plyr) 
df <- ldply(b) 
rownames(df) <- a 
0

Большое вам спасибо! Прежде чем читать ваш ответ, я попробовал другой метод с помощью:

for (x in niveaux) { 
    assign(x,pi) 
    assign(paste(x,"moy"),"moy") 
    } 
# Que j'utilise ensuite avec qq chose du genre : 
assign(x,append(get(x),1)) 

Но это сложнее!

Оливье

PS: «а» может быть rowname или столбец, цель состоит в том, чтобы экспортировать data.frame в виде файла CSV.

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