如何将由冒号分隔的字符更改为整数?

How to change a characters separated by a colon into an integer?

我有一个数字向量,用于对列表中的条目进行子集化。许多列表项是单个数字,但其他列表项是一个范围。目前,它们都保存为字符,我想将它们转换为数字。我已经使用 as.integer() 并且,但是当我这样做时,我收到一条消息说“强制引入的 NA”。

我的问题是我可以将具有字符类型的数字范围 ("5:20") 转换为整数范围 (5:20) 吗? 我想用它来像这样对数据框进行子集化:my_dataframe[5:20].

如果效率更高,我非常愿意采用完全不同的方法。

示例如下:

x <- c("1", "2", "3", "4:5", "6:9", "10")

as.integer(x)

[1] NA
Warning message:
In x %>% unlist() %>% as.integer() : NAs introduced by coercion 

如果您 100% 确定 x 的元素是并且将始终是您指定的形式,那么您可以 parseeval 每个元素:

x %>% map(~ eval(parse(text = .x))) %>% unlist()
 [1]  1  2  3  4  5  6  7  8  9 10

但是,一般来说,评估变量字符串并不是一个好主意(特别是出于安全原因)。