首页 > 解决方案 > 使用 1:n 子集数据表

问题描述

在处理一些数据时,我遇到了子设置 data.table 的问题

我的数据表示例

library(data.table)

datatab <- structure(list(a = c(183591969L, 183591969L, 183591984L, 183591727L, 
                     183591733L), b = c(183591984L, 183591985L, 183591985L, 183591729L, 
                                        183591737L)), .Names = c("a", "b"), class = c("data.table", "data.frame"
                                        ), row.names = c(NA, -5L)) 

我只是尝试用一个变量来分割整个事情

a <- 2
datatab[1:a,]

但得到错误

警告消息:在 1:a 中:数值表达式有 5 个元素:仅使用第一个元素

尽管

df <- as.data.frame(datatab)
df[1:a,]

datatab[1:2,]

按预期工作。

可能是我没有得到的明显东西。我想这与 data.table 库处理数据的方式有关,但如果有人能澄清一下,我将不胜感激。由于我的真实数据要大得多,我想避免as.data.frame()

标签: rdataframedata.table

解决方案


您正在使用a作为参数,它恰好是 的一列,data.table为参数使用不同的名称:

x <- 2
datatab[1:x,]

#           a         b
#1: 183591969 183591984
#2: 183591969 183591985

推荐阅读