【问题标题】:Subsetting a datatable with 1:n使用 1:n 子集数据表
【发布时间】:2018-06-20 23:14:50
【问题描述】:

在处理一些数据时,我遇到了子设置 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()

【问题讨论】:

    标签: r dataframe data.table


    【解决方案1】:

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

    x <- 2
    datatab[1:x,]
    
    #           a         b
    #1: 183591969 183591984
    #2: 183591969 183591985
    

    【讨论】:

    • 哦,哇,这是我根本没想到的。谢谢!
    • 还有一个新功能,..a,它在父作用域中查找 a 变量。
    猜你喜欢
    • 2017-12-15
    • 1970-01-01
    • 2015-12-29
    • 1970-01-01
    • 2021-10-31
    • 2013-06-11
    • 2014-02-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多