R中的rep函数是什么意思?

6
当我执行以下操作时:

rep(1:4, rep(4,4))

我明白了

1 1 1 1 2 2 2 2 3 3 3 3 4 4 4 4 

这是预期的。但当我尝试将长度修正为16(即输出的长度)时,如下所示:

rep(1:4, rep(4,4), length.out = 16)

我理解

1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4

很奇怪,我认为这两个命令应该执行相同的功能。有人能帮忙吗?

谢谢!


2
你是否阅读了帮助页面?rep - GSee
2个回答

14

来自 ?rep

‘length.out’ 可以替代 ‘times’,此时 ‘x’ 会被重复多次直到生成一个指定长度的向量。如果两个参数都提供,则以 ‘length.out’ 为准,‘times’则会被忽略。


但是请查看 each 参数,以确定它是否提供了您想要的输出。 - Greg Snow
谢谢GSee。我没有阅读整个帮助文档。然而,困扰我的是,如果我指定rep(1:4, each = 4, length = 20),那么我得到的是1 1 1 1 2 2 2 2 3 3 3 3 4 4 4 4 1 1 1 1,但我猜想,如果将each=4替换为**rep(4,4)**,则打印方法会有所不同,尽管这两种方法都应该在这里实现相同的目的。谢谢! - Vinayak Agarwal
1
你需要仔细阅读?repprint方法是什么意思?rep(1:4, each = rep(4,4), length = 20)会给出一个警告,这个警告很容易理解(特别是如果你读了帮助文档!)。 - mnel

-2

rep(1:4,,rep(4,4),length.out=16)会给出你想要的结果。更简单的写法是rep(1:4,,16,4)


6
技术上是正确的,但是呃!最好使用命名参数而不是占位符(,,)。 - Ben Bolker
1
我不确定这是否在技术上是正确的。它在我正在输入此内容的计算机上的R实例中运行(几年前:2.15),但我收到一个警告消息,表明这只是偶然发生的(“警告:使用了'each'参数的第一个元素”)。此外,除了前两个参数之外的参数顺序根本没有记录,因此我认为不能保证它不会在将来的修订版本中出现故障。 - zwol

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接