相关疑难解决方法(0)

data.table对象分配有:=来自未打印的函数内

我想data.table在一个函数内修改一个.如果我:=在函数中使用该功能,则仅为第二次调用打印结果.

请看下图:

library(data.table)
mydt <- data.table(x = 1:3, y = 5:7)

myfunction <- function(dt) {
    dt[, z := y - x]
    dt
}
Run Code Online (Sandbox Code Playgroud)

当我只调用该函数时,表格不会被打印(这是标准行为.但是,如果我将返回的内容保存data.table到新对象中,则不会在第一次调用时打印,仅针对第二次调用.

myfunction(mydt)  # nothing is printed   
result <- myfunction(mydt) 
result  # nothing is printed
result  # for the second time, the result is printed
mydt                                                                     
#    x y z
# 1: 1 5 4
# 2: 2 6 4
# 3: 3 7 4 
Run Code Online (Sandbox Code Playgroud)

你能解释一下为什么会发生这种情况以及如何预防吗?

r function assignment-operator data.table

37
推荐指数
1
解决办法
2189
查看次数

何时以及为什么"打印"需要两次尝试打印"data.table"?

有时print需要两次尝试打印data.table:

> library(data.table)
> 
> rm(list=ls())
> 
> Tbl <- fread( input = "Nr; Value
+                        Nr 1;46.73
+                        Nr 2;49.02
+                        Nr 3;50.62
+                        Nr 4;49.80
+                        Nr 5;50.15",
+               sep    = ";",
+               header = TRUE,
+               colClasses = c("character","numeric") )
> print(Tbl)
     Nr Value
1: Nr 1 46.73
2: Nr 2 49.02
3: Nr 3 50.62
4: Nr 4 49.80
5: Nr 5 50.15
> Tbl <- Tbl[, Nr := as.numeric( gsub( "Nr …
Run Code Online (Sandbox Code Playgroud)

r data.table

7
推荐指数
1
解决办法
125
查看次数

标签 统计

data.table ×2

r ×2

assignment-operator ×1

function ×1