R 创建一个数据帧,其中列的数量和名称在运行时确定

R 创建一个数据帧,其中列的数量和名称在运行时确定,r,dataframe,R,Dataframe,我想创建一个数据帧,其列是多个向量的连续元素,所有向量具有相同的长度。例如,使用向量p和q 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,如示例中所示,或者5,6,等等。我希望在运行时自动更新列的编号和名称,而无需每次重写data.

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

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
,如示例中所示,或者
5
6
,等等。我希望在运行时自动更新列的编号和名称,而无需每次重写
data.frame
赋值语句。这可行吗?

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

d1 <- data.frame(as.list(c(q,p)))
names(d1) <- c(paste0('q', seq_along(q)), paste0('p', seq_along(p)))
我们还可以使用
make.unique
来命名列

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

别担心,注释不适用于您编辑的代码。谢谢
make.unique(rep(c('q', 'p'),lengths(list(q,p))))