r - data.table 避免回收

标签 r data.table recycle

我正在构建一个 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/

相关文章:

r - 使用 tabularx 环境将表格从 R 导出到 LaTeX

r - R-从存储在变量中的函数名称调用函数吗?

r - 如何合并两个表,然后使用 data.table 一步制表计数

android - 如何让 RecyclerView 停止回收定义的位置?

安卓 fragment : recycle bitmap

r - 使用 R 的非零零假设的相关显着性

r - 将数据框列中的特定值按列与向量相乘

r - 处理 R 中的日期时间值

R - 以不同方式聚合 data.table 列

Android ListView重复修改列表项