创建一个数据框,其中列的数量和名称在运行时

时间:2016-02-09 16:08:57

标签: r dataframe

我想创建一个数据框,其列是多个向量的连续元素,所有向量具有相同的长度。例如,使用向量pq

p=c(13,27,35,47)
q=c(800,700,600,400) 

我想构建一个数据框

df=data.frame(q1=q[1],q2=q[2],q3=q[3],q4=q[4],p1=p[1],p2=p[2],p3=p[3],p4=p[4])

难点在于矢量的长度是在运行时确定的,因此它可以是4,如示例中所示,或56等。我想要数字和要在运行时自动更新的列的名称,而不必每次都重写data.frame赋值语句。那是可行的吗?

1 个答案:

答案 0 :(得分:1)

我们可以将其放在list中并转换为data.frame

d1 <- data.frame(as.list(c(q,p)))
names(d1) <- c(paste0('q', seq_along(q)), paste0('p', seq_along(p)))

或使用as.data.frame.list

d2 <- cbind(as.data.frame.list(q), as.data.frame.list(p))

我们还可以使用make.unique来命名列

make.unique(rep(c('q', 'p'),lengths(list(q,p))))