Czasami print
potrzebuje dwie próby, aby wydrukować data.table
:Kiedy i dlaczego "print" wymaga dwóch prób wydrukowania "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 ", "", Tbl$Nr))]
> print(Tbl)
> print(Tbl)
Nr Value
1: 1 46.73
2: 2 49.02
3: 3 50.62
4: 4 49.80
5: 5 50.15
>
Nie tak data.frame
:
> rm(list=ls())
>
> DF <- read.table(text = "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"))
>
> DF$Nr <- as.numeric(gsub("Nr ", "", DF$Nr))
> print(DF)
Nr Value
1 1 46.73
2 2 49.02
3 3 50.62
4 4 49.80
5 5 50.15
>
Jeśli kod zawarty w pliku skrypcie data.table
zostanie wydrukowany natychmiast:
> source(path_to_Script_1,echo=TRUE,prompt.echo="(script) ",max.deparse.length=500)
(script) library(data.table)
(script) rm(list=ls())
(script) 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"))
(script) Tbl <- Tbl[, Nr := as.numeric(gsub("Nr ", "", Tbl$Nr))]
(script) print(Tbl)
Nr Value
1: 1 46.73
2: 2 49.02
3: 3 50.62
4: 4 49.80
5: 5 50.15
>
Ale jeśli print(Tbl)
jest pominięte w skrypcie Plik, print
na konsoli ponownie potrzebuje dwóch prób:
> source(path_to_Script_2,echo=TRUE,prompt.echo="(script) ",max.deparse.length=500)
(script) library(data.table)
(script) rm(list=ls())
(script) 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"))
(script) Tbl <- Tbl[, Nr := as.numeric(gsub("Nr ", "", Tbl$Nr))]
> print(Tbl)
> print(Tbl)
Nr Value
1: 1 46.73
2: 2 49.02
3: 3 50.62
4: 4 49.80
5: 5 50.15
>
Czy ktoś może mi powiedzieć, kiedy ans dlaczego print
potrzebuje dwóch prób? używam wersji 3.2.2 R:
> R.version
_
platform x86_64-w64-mingw32
arch x86_64
os mingw32
system x86_64, mingw32
status
major 3
minor 2.2
year 2015
month 08
day 14
svn rev 69053
language R
version.string R version 3.2.2 (2015-08-14)
nickname Fire Safety
system operacyjny Windows 7.
czy usunąć wszystkie znaki + i>, aby kod mógł być łatwo uruchomiony przez osobę próbującą odpowiedzieć na twoje pytanie? –
[prawdopodobnie powiązane] (http://stackoverflow.com/questions/32988099/data-table-objects-not-printed-after-returned-from-function) – Cath
Dlaczego robi różnicę, jeśli 'print (Tbl)' znajduje się w pliku skryptu, czy nie? – mra68