【发布时间】:2011-11-27 08:15:31
【问题描述】:
在(主要)回答this 问题的过程中,我偶然发现了一些我觉得我以前应该已经看过的东西。假设您有一个列表:
l <- list(a = 1:3, b = letters[1:3], c = runif(3))
尝试将l 强制转换为各种类型会返回错误:
> as.numeric(l)
Error: (list) object cannot be coerced to type 'double'
> as.logical(l)
Error: (list) object cannot be coerced to type 'logical'
但是,我显然被允许强制列出角色,我只是没想到会出现这样的结果:
> as.character(l)
[1] "1:3"
[2] "c(\"a\", \"b\", \"c\")"
[3] "c(0.874045701464638, 0.0843329173512757, 0.809434881201014)"
相反,如果允许我将列表强制转换为字符,我会认为我会看到更像这样的行为:
> as.character(unlist(l))
[1] "1" "2" "3" "a" "b"
[6] "c" "0.874045701464638" "0.0843329173512757" "0.809434881201014"
请注意,我最初指定列表元素的方式会影响as.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)"
我有两个问题:
-
as.character如何从我最初创建的列表l中挖掘信息,以便吐出1:3与c(1,2,3)。 - 究竟在什么情况下我想这样做?我什么时候想在列表中调用
as.character()并获取此表单的输出?
【问题讨论】: