Por que esse comportamento ao coagir uma lista de caracteres via as.character ()?

No processo (principalmente) de responderest pergunta, eu me deparei com algo que eu sinto que realmente já deveria ter visto antes. Digamos que você tenha uma lista:

l <- list(a = 1:3, b = letters[1:3], c = runif(3))

Tentativa de coagirl para vários tipos retorna um erro:

> as.numeric(l)
Error: (list) object cannot be coerced to type 'double'
> as.logical(l)
Error: (list) object cannot be coerced to type 'logical'

No entanto, aparentemente, estou autorizado a coagir uma lista a um personagem, mas não esperava esse resultado:

> as.character(l)
[1] "1:3"                                                        
[2] "c(\"a\", \"b\", \"c\")"                                     
[3] "c(0.874045701464638, 0.0843329173512757, 0.809434881201014)"

Em vez disso, se eu tiver permissão para coagir listas de caracteres, eu teria pensado em ver um comportamento mais ou menos assim:

> as.character(unlist(l))
[1] "1"                  "2"                  "3"                  "a"                  "b"                 
[6] "c"                  "0.874045701464638"  "0.0843329173512757" "0.809434881201014"

Observe quecomo especificar os elementos da lista originalmente afeta a saída deas.character:

l <- list(a = c(1,2,3), b = letters[1:3], c = runif(3))
> as.character(l)
[1] "c(1, 2, 3)"                                                 
[2] "c(\"a\", \"b\", \"c\")"                                     
[3] "c(0.344991483259946, 0.0492411875165999, 0.625746068544686)"

Eu tenho duas perguntas

Como éas.character dragando as informações da minha criação original da listal para cuspir fora1:3 versusc(1,2,3). Em que circunstâncias eu gostaria de fazer isso, exatamente? Quando eu gostaria de ligar paraas.character() em uma lista e obter saída deste formulário?

questionAnswers(2)

yourAnswerToTheQuestion