将 r 数据帧转换为正确的格式以使用 rep

Convert an r dataframe to correct format to use rep

我有一个形式的数据框

A = data.frame(c(1485,1486,1701,1808))
names(A) <- c("ID")

和形式为

的第二个数据框
B = data.frame(1:12)
names(B) <- "value"

我希望能够将其与 rep 一起使用以形成 B 中的第二列,这样我就有了

B$new <- rep(A,each = 3, length.out = 12)

给予

> B
   value  new
1      1 1485
2      2 1485
3      3 1485
4      4 1486
5      5 1486
6      6 1486
7      7 1701
8      8 1701
9      9 1701
10    10 1808
11    11 1808
12    12 1808

如果我定义 A = c(1485,1486,1701,1808) ,这很好用,但因为 A 是一个数据框,所以它不是。如何将 A 转换为正确的形式以与 rep 一起使用?我试过 as.list、as.vector、as.integer 都不成功。

由于A 是数据框,您需要指定要重复的列。 (此处ID

B$new <- rep(A$ID,each = 3, length.out = 12)
B

#   value  new
#1      1 1485
#2      2 1485
#3      3 1485
#4      4 1486
#5      5 1486
#6      6 1486
#7      7 1701
#8      8 1701
#9      9 1701
#10    10 1808
#11    11 1808
#12    12 1808

在你的情况下,这也可以在不使用 length.out 参数的情况下工作

rep(A$ID,each = 3)

它将在 A 中每隔 ID 重复 3 次,给出相同的结果。

If A is a data frame you can use rep function in this way

A = data.frame(c(1485,1486,1701,1808))
names(A) <- c("ID")

B = data.frame(1:12)
names(B) <- "value"


B$new <- sort(unlist(rep(A,times=3)))

print(B)
  value  new
1      1 1485
2      2 1485
3      3 1485
4      4 1486
5      5 1486
6      6 1486
7      7 1701
8      8 1701
9      9 1701
10    10 1808
11    11 1808
12    12 1808