在R

时间:2017-09-06 18:48:05

标签: r

请帮助以下示例:

a <- "1:4, 20:25, 30:40"

我需要将a转换为数字向量,就像我在a中没有引号一样,我的意思是:

> c(1:4, 20:25, 30:40)
 [1]  1  2  3  4 20 21 22 23 24 25 30 31 32 33 34 35 36 37 38 39 40

1 个答案:

答案 0 :(得分:0)

unlist(lapply(unlist(strsplit(a, ",")), function(x) eval(parse(text = x))))
# [1]  1  2  3  4 20 21 22 23 24 25 30 31 32 33 34 35 36 37 38 39 40

这里是基地R中另一种不使用eval(parse())

的方法
unlist(lapply(strsplit(x = a, split = ","), function(x){
    unlist(lapply(strsplit(x = x, split = ":"), function(y)
        as.numeric(y[1]):as.numeric(y[2])))
}))
# [1]  1  2  3  4 20 21 22 23 24 25 30 31 32 33 34 35 36 37 38 39 40