0

data.frame以下に示すように、 a の作成を繰り返し記述せずにベクトル化する方法はありますか? 基本的に、膨大な数の列を作成したいので、より短い方法を探しています。

QQ <- data.frame(rep(55,100),rep(55,100),rep(55,100),rep(55,100),rep(55,100),rep(55,100),rep(55,100),rep(55,100),rep(55,100),rep(55,100),rep(55,100),rep(55,100),rep(55,100),rep(55,100),rep(55,100),rep(55,100))
names(QQ) <- sprintf("%s%02d", "S", c(1:16))

何度も書くのではなく、rep(55,100)ベクトル化(それ以外の場合は関数)で行いたいと思います。

4

3 に答える 3

3

repへの引数としての「リスト」オブジェクトdata.frame:

> QQ <- data.frame(rep(list(rep(55,5)), 5))
> names(QQ) <- sprintf("%s%02d", "S", c(1:5))
> QQ
  S01 S02 S03 S04 S05
1  55  55  55  55  55
2  55  55  55  55  55
3  55  55  55  55  55
4  55  55  55  55  55
5  55  55  55  55  55
于 2013-06-07T15:03:13.687 に答える
0

または、行と列、およびrepこれらの積をマトリックスに定義し、列をマトリックスに使用してからdim、次のように強制するのはどうですかdata.frame

#  Desired columns
nc <- 100
# Desired rows
nr <- 1e3

#  Turn matrix into data.frame (is this necessary - can you use a matrix - would be quicker)
QQ <- data.frame( matrix( rep( 55 , nc * nr ) , ncol = nc ) )
dim(QQ)
[1] 1000  100
names(QQ) <- sprintf("%s%02d", "S", c(1:nc))
于 2013-06-07T15:20:08.777 に答える
0

rep 内で rep を使用できます。

QQ <- as.data.frame(matrix(rep(rep(55,100),16),nrow=100,ncol=16))
names(QQ) <- sprintf("%s%02d", "S", c(1:16))
于 2013-06-07T15:20:14.620 に答える