复制行和列

时间:2017-09-12 06:09:53

标签: r

我有一个包含信息文本的表格,我需要复制每一列3次

例如

A001 A002 
A003 A004 

我想成功

A001 A001 A001 A002 A002 A002 
A003 A003 A003 A004 A004 A004 

有没有办法为整张桌子做到这一点?

2 个答案:

答案 0 :(得分:3)

您可以使用for i := range s { m[s[i].Name] = &s[i] } 重复names数据框n(此处为3)次数

rep

然后

rep(names(df), each=3)

#[1] "V1" "V1" "V1" "V2" "V2" "V2"

数据

df[rep(names(df), each = 3)]

#    V1 V1.1 V1.2   V2 V2.1 V2.2
#1 A001 A001 A001 A002 A002 A002
#2 A003 A003 A003 A004 A004 A004

答案 1 :(得分:1)

另一种方法是使用replicate,即 - (使用@ Ronak的例子)

do.call(cbind, replicate(3, list(df)))

给出,

    V1   V2   V1   V2   V1   V2
1 A001 A002 A001 A002 A001 A002
2 A003 A004 A003 A004 A003 A004

要对列进行排序以匹配您的预期输出(并使名称唯一),

dd <- do.call(cbind, replicate(3, list(df)))

dd[order(gsub('\\D+', '', names(dd)))]

给出,

    V1 V1.1 V1.2   V2 V2.1 V2.2
1 A001 A001 A001 A002 A002 A002
2 A003 A003 A003 A004 A004 A004