我没有找到一个骗子,虽然这肯定以前有人问过:/
如何在unlist没有小数的元素中创建数字列表(甚至向量)而不在那些首先没有小数的元素中创建小数(双关语半意图)。
unlist(list(1, 1.11))
#> [1] 1.00 1.11
Run Code Online (Sandbox Code Playgroud)
formatC/prettyNum也适用于此:
formatC(unlist(list(1, 1.11)))
## [1] "1" "1.11"
prettyNum(unlist(list(1, 1.11)))
## [1] "1" "1.11"
Run Code Online (Sandbox Code Playgroud)
实际上,as.character似乎就足够了:
as.character(list(1, 1.11))
## [1] "1" "1.11"
Run Code Online (Sandbox Code Playgroud)
尽管只有当list元素是单个值时,它才能按您的预期工作:
as.character(list(1, 1.11, c(2, 2.22), list(3, 3.33)))
## [1] "1" "1.11" "c(2, 2.22)" "list(3, 3.33)"
Run Code Online (Sandbox Code Playgroud)
从帮助文件中as.character:
对于列表和配对列表(包括语言对象,如调用),它单独解析元素,除了它提取长度为 1 的字符向量的第一个元素。
在这些情况下,使用as.character after unlist会更有意义:
as.character(unlist(list(1, 1.11, c(2, 2.22), list(3, 3.33))))
## [1] "1" "1.11" "2" "2.22" "3" "3.33"
Run Code Online (Sandbox Code Playgroud)