在R中使用rep()函数

shi*_*tri 3 r

rep()在R中使用带有向量的functon:

c("x","y")[rep(c(1,2,2,1), times=4)]
Run Code Online (Sandbox Code Playgroud)

其输出为:

"x" "y" "y" "x" "x" "y" "y" "x" "x" "y" "y" "x" "x" "y" "y" "x"
Run Code Online (Sandbox Code Playgroud)

我不明白为什么x y y x在这里重复。如果使用rep(c(1,2,2,1), times=4),它将重复1 2 2 1四次。

为什么使用xy在这里?

And*_*nes 7

您的rep()代码产生向量:

> rep(c(1,2,2,1),times=4) [1] 1 2 2 1 1 2 2 1 1 2 2 1 1 2 2 1

您可以c("x","y")使用向量的索引来引用向量中的元素,例如:

> c("x","y")[1] [1] "x"

提供向量中位置1处的元素,在这种情况下为"x"

您还可以使用索引向量多次引用此元素,例如:

> c("x","y")[c(1,1,1,1,1)] [1] "x" "x" "x" "x" "x"

返回向量中位置1的元素5次。

因此,当您提供Rc("x","y")[rep(c(1,2,2,1), times=4)]相同的时 c("x","y")[c(1,2,2,1,1,2,2,1,1,2,2,1,1,2,2,1)],您返回的是相同的模式,但是将这些值替换为向量中位于这些索引处的元素。

因此,您将返回向量的1st,2nd,2nd和1st元素重复4次,而不是重复重复1,2,2,1 4次。