如何将保存为字符串的序列转换为数字?

How to convert to numeric a sequence saved as a string?

如何将保存为字符串的序列转换为数字?

让我们得到字符串 "3:7"。我想得到 c(3,4,5,6,7)3:7,无论如何 R 将此数据读取为数字,而不是字符串。

如果我这样做 as.numeric("3:7"),我会得到一个 NA。 R 中是否有任何简单的方法或函数可以做到这一点?

一个更复杂的例子:

rec_pairs <- list(c("3:7", "1"), c("2,1", "3"), c("NA", "5"), c("6", "NA"))

我有兴趣获取列表向量第一个分量中的所有不同元素,即 3,4,5,6,7,2,1,NA,6

我们可以使用 eval(parse

eval(parse(text = "3:7"))

split 并使用 seq

进行转换
Reduce(`:`, scan(text="3:7", sep=":", what = numeric()))

基于新数据

unlist(sapply(rec_pairs, function(x) lapply(strsplit(x[1], "[,:]"), 
       function(y) Reduce(`:`, as.list(as.numeric(y))))))
#[1]  3  4  5  6  7  2  1 NA  6

evalparse的方法是最有效的方法。这是 base R 的另一个解决方案:

v <- as.numeric(unlist(strsplit("3:7",":")))
s <- seq(v[1],v[2])

这样

> s
[1] 3 4 5 6 7