[Rd] print for lists evaluates "AsIs"-elements of type "language"

Andreas Kersting r-devel at akersting.de
Tue Jun 13 12:57:39 CEST 2017


Consider the following code snippets:

 > list(quote(1 + 1), I(quote(1 + 1)))
[[1]]
1 + 1

[[2]]
[1] 2  # should also be 1 + 1!?

 > str(list(quote(1 + 1), I(quote(1 + 1))))
List of 2
  $ : language 1 + 1
  $ : language + 1 1  # why is this line different from the one above?
   ..- attr(*, "class")= chr "AsIs"

 > quote(1 + 1)
1 + 1

 > I(quote(1 + 1))
1 + 1  # OK

 > str(quote(1 + 1))
  language 1 + 1

 > str(I(quote(1 + 1)))
  language + 1 1  # again different
  - attr(*, "class")= chr "AsIs"


This inconsistency is particularly striking when printing the individual 
elements of a list works but printing the whole list does not:

 > l <- list(quote(length(a)), I(quote(length(a))))

 > l[[1]]
length(a)

 > l[[2]]
length(a)

 > l
[[1]]
length(a)

[[2]]
Error in print(length(a)) : object 'a' not found


Should we consider this a bug? If so, I can add it to Bugzilla.



More information about the R-devel mailing list