如何将充满双精度的列表快速转换为整数?

问题描述

令人惊讶的是,我通过自己的研究没有找到任何令人满意的答案。

假设我有以下列表:

bc <- list(row0 = 1,row1 = c(1,1),row2 = c(1L,2,row3 = c(1,3,1))

我想将该列表中的所有数字转换为整数。我的第一个简单方法是在每个数字后放置一个“L”。这种方法可行,但非常不方便。

第二,我试过了

as.integer(bc[[1]])

但这不会将列表中的变量保存为整数。

第三,我尝试了另一个线程中建议的类似内容

as.integer(unlist(bc))

这确实“取消列出列表”并将数字转换为整数,但是,当我想再次使用列表名称恢复与以前完全相同的列表时,我现在卡住了。

必须有比这更快的方法吗?

非常感谢!

解决方法

map() 中的 purrr 函数应该会有所帮助:

map(bc,as.integer)
# $row0
# [1] 1
# 
# $row1
# [1] 1 1
# 
# $row2
# [1] 1 2 1
# 
# $row3
# [1] 1 3 3 1

str(purrr::map(bc,as.integer))
# List of 4
#  $ row0: int 1
#  $ row1: int [1:2] 1 1
#  $ row2: int [1:3] 1 2 1
#  $ row3: int [1:4] 1 3 3 1

如果您更喜欢基本的 R 类情绪,则可以使用 lapply(bc,as.integer) 获得相同的结果。