data.table避免回收

Ste*_* J. 6 r recycle data.table

我正在构建一个data.table具有不同长度的两个(或更多)输入向量:

x <- c(1,2,3,4)
y <- c(8,9)

dt <- data.table(x = x, y = y)
Run Code Online (Sandbox Code Playgroud)

并且需要填充较短的向量NA而不是回收它们的值,从而产生data.table如下:

   x  y
1: 1  8
2: 2  9
3: 3 NA
4: 4 NA
Run Code Online (Sandbox Code Playgroud)

有没有办法实现这一点,而无需NA在将它们传递给data.table()构造函数之前显式填充较短的向量?

谢谢!

jog*_*ogo 5

可以使用超出范围的索引:

library("data.table")

x <- c(1,2,3,4)
y <- c(8,9)
n <- max(length(x), length(y))

dt <- data.table(x = x[1:n], y = y[1:n])
# > dt
#    x  y
# 1: 1  8
# 2: 2  9
# 3: 3 NA
# 4: 4 NA
Run Code Online (Sandbox Code Playgroud)

或者您可以y通过执行来扩展(如评论中推荐的@Roland):

length(y) <- length(x) <- max(length(x), length(y))
dt <- data.table(x, y)
Run Code Online (Sandbox Code Playgroud)

  • 长度(y)< - 长度(x) (3认同)