如何将由冒号分隔的字符更改为整数?
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
的元素是并且将始终是您指定的形式,那么您可以 parse
和 eval
每个元素:
x %>% map(~ eval(parse(text = .x))) %>% unlist()
[1] 1 2 3 4 5 6 7 8 9 10
但是,一般来说,评估变量字符串并不是一个好主意(特别是出于安全原因)。
我有一个数字向量,用于对列表中的条目进行子集化。许多列表项是单个数字,但其他列表项是一个范围。目前,它们都保存为字符,我想将它们转换为数字。我已经使用 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
的元素是并且将始终是您指定的形式,那么您可以 parse
和 eval
每个元素:
x %>% map(~ eval(parse(text = .x))) %>% unlist()
[1] 1 2 3 4 5 6 7 8 9 10
但是,一般来说,评估变量字符串并不是一个好主意(特别是出于安全原因)。