我有一个包含信息文本的表格,我需要复制每一列3次
例如
A001 A002
A003 A004
我想成功
A001 A001 A001 A002 A002 A002
A003 A003 A003 A004 A004 A004
有没有办法为整张桌子做到这一点?
答案 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