1

The data.table package (which is amazingly useful) still prints the data.table output in the following scenario. Is this a known issue? It seems to occur when is.na is used.

Earlier Posting for Reference

di <- data.table(iris)
di[is.na(Sepal.Length),Color := "Blue"]
packageVersion("data.table")

 Sepal.Length Sepal.Width Petal.Length Petal.Width   Species
  1:          5.1         3.5          1.4         0.2    setosa
  2:          4.9         3.0          1.4         0.2    setosa
  3:          4.7         3.2          1.3         0.2    setosa
  4:          4.6         3.1          1.5         0.2    setosa
  5:          5.0         3.6          1.4         0.2    setosa
 ---                                                            
146:          6.7         3.0          5.2         2.3 virginica
147:          6.3         2.5          5.0         1.9 virginica
148:          6.5         3.0          5.2         2.0 virginica
149:          6.2         3.4          5.4         2.3 virginica
150:          5.9         3.0          5.1         1.8 virginica
> packageVersion("data.table")
[1] ‘1.9.4’

6/14/2015 Edit: Thanks for the responses. Indeed it seems that the issue is that no records meet the criteria, whereas my is.na example is just an example of the general issue. To confirm, this line also causes the data.table to display:

 di[Sepal.Length > 100,Color := "Blue"]

By the way, even if the column already exists the data.table still gets displayed if no records are found. As so:

d2 <- data.table(iris)
d2[,Clr := NA]
d2[Sepal.Length > 100, Clr := "Blue"]

Sounds like the authorities are already aware of this and have it tackled. I can work around the issue in the meantime.

Community
  • 1
  • 1
ddunn801
  • 1,900
  • 1
  • 15
  • 20
  • There is no `NA` element in `Sepal.Length`, If there was one, it would create a column `Color` with value `Blue` corresponding to that `NA` and all other elements `NA`. I am not sure what would be the expected output you want here. For example, `di$Sepal.Length[4] <- NA; di[is.na(Sepal.Length),Color := "Blue"]` – akrun Jun 14 '15 at 07:07
  • 2
    May be you need `di[, Color:= NA_character_][is.na(Sepal.Length), Color := 'Blue']`. It would create a `Color` column even if there is no `NA` in the `Sepal.Length` – akrun Jun 14 '15 at 07:12
  • 1
    This was a bug that was fixed in the devel version on GitHub already 8 months ago. See [here](https://github.com/Rdatatable/data.table/issues/887). – David Arenburg Jun 14 '15 at 08:01
  • 1
    lack of new column is related to open issue [data.table#1166](https://github.com/Rdatatable/data.table/issues/1166) – jangorecki Jun 14 '15 at 10:09

0 Answers0