我正在构建一个 data.table
来自两个(或更多)不同长度的输入向量:
x <- c(1,2,3,4)
y <- c(8,9)
dt <- data.table(x = x, y = y)
并且需要用
NA
填充较短的向量而不是回收它们的值,导致 data.table
像这样: x y
1: 1 8
2: 2 9
3: 3 NA
4: 4 NA
有没有办法在不使用
NA
显式填充较短向量的情况下实现这一点?在将它们传递给 data.table()
之前构造函数?谢谢!
最佳答案
可以使用超出范围的索引:
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
或者您可以扩展
y
通过这样做(如@Roland 在评论中推荐的那样):length(y) <- length(x) <- max(length(x), length(y))
dt <- data.table(x, y)
关于r - data.table 避免回收,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49346420/