问题描述
令人惊讶的是,我通过自己的研究没有找到任何令人满意的答案。
假设我有以下列表:
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)
获得相同的结果。