按列表中的列表或向量重复数据帧列

时间:2018-03-06 19:11:07

标签: r dataframe rep

我有df(数据框):

df=data.frame(V1=c(10,20,10,20),V2=c(20,30,20,30),V3=c(20,10,20,10))
> df
  V1 V2 V3
1 10 20 20
2 20 30 10
3 10 20 20
4 20 30 10

我有一个向量v<-list(1,3,2) 每个元素代表相关列的重复次数。 我想创建以下dfV数据框dfV

> dfV
      V1 V2_1 V2_2 V2_3 V3_1 V3_2
    1 10  20   20  20   20   20
    2 20  30   30  30   10   10
    3 10  20   20  20   20   20
    4 20  30   30  30   10   10

2 个答案:

答案 0 :(得分:2)

我们可以使用rep

df[rep(names(df), v)]

答案 1 :(得分:2)

new_df <- NULL
for (i in 1:ncol(df)){
 replicate_col <- replicate(v[i], df[,i])
 new_df <- cbind(new_df, replicate_col)
}