【问题标题】:Why do we get NULL as a side effect in data.table为什么我们在 data.table 中得到 NULL 作为副作用
【发布时间】:2016-07-22 01:54:06
【问题描述】:

下面的数据和代码来自??data.table和example(data.table)。

DT = data.table(x=rep(c("a","b","c"),each=3), y=c(1,3,6), v=1:9)
DT[2:5,cat(v,"\n")]        # just for j's side effect

2 3 4 5 
NULL

我不明白为什么我们在 cat(v) 之后得到 NULL。 我们不能得到NULL吗?

【问题讨论】:

    标签: r data.table


    【解决方案1】:

    你得到NULL,因为数据表j位置的表达式,即cat返回NULL,因此你得到一个NULL值返回,因为没有变量来捕获该值,默认会在控制台打印。如果你不希望它被打印出来,你可以将它分配给一个变量:

    x <- DT[2:5, cat(v, "\n")]
    # 2 3 4 5 
    x
    # NULL
    

    【讨论】:

    • 非常感谢。现在我很困惑为什么我们首先得到 2,3,4,5.. 请您也对此进行简要解释吗?
    • 你得到 2,3,4,5 因为 cat 函数的副作用。您在数据表的 i 位置指定了 2:5,这意味着 cat 将在索引 2:5 处打印出向量 v,在您的情况下是 2,3,4,5。
    • 谢谢!现在我明白了
    • @Darren 这是data.table[] 打印方式的副作用,请参阅与它相关的一些问题(12)和FAQs 2.21-23
    猜你喜欢
    • 1970-01-01
    • 2015-12-13
    • 2020-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-22
    • 1970-01-01
    相关资源
    最近更新 更多