R中所有列的相同循环以创建新数据框

时间:2019-09-03 13:32:00

标签: r loops matrix

对于以下数据框,

mydata=data.frame(x1=c(4,8,7,12,10),x2=c(5,7,18,4,12),x3=c(10,12,5,2,14))
mydata
  x1 x2 x3
1  4  5 10
2  8  7 12
3  7 18  5
4 12  4  2
5 10 12 14

我想创建一个新的3列,其中每个列将通过重复每个元素12次来创建。对于第一个新列,

y1=matrix(NA, nrow=5,ncol=12)
for ( g in 1:5){
  y1[g,]=rep(mydata$x1[g],12)
}
ynew_1=c(apply( y1, 1, c))

ynew_1

 4  4  4  4  4  4  4  4  4  4  4  4  8  8  8  8  8  8  8  8  8  8  8  8  7  7  
7  7  7  7  7  7  7  7  7  7 12 12 12 12 12 12 12 12 12 12 12 12 10 10 10 10 10 10 10 10 10 10 10 10

我可以用类似的方式创建ynew_2和ynew_3。 我可以使用任何函数或循环来创建这些新变量吗?任何帮助将不胜感激

1 个答案:

答案 0 :(得分:1)

使用tidyr

newdata <- mydata %>% uncount(12)

uncount“根据变量或表达式复制行”,它可以满足您的需要,而不会通过循环降低代码速度并将其保留为数据帧。