我有一个收件箱,其中一列包含值范围以及单个值,如下所示:

x <- c("a","b")
y <- c("1:3,7","9")

dat <- data.frame("char"=x,"range"=y)

> dat
  char range
1    a 1:3,7
2    b     9

我需要做的是转换range列,以便显示范围中包含的所有值:

> dat2
  char   range
1    a 1,2,3,7
2    b       9

得益于this very similar question:中提供的解决方案,我取得了进展

v1 <- c("1:3")

unlist(lapply(v1, function(x) eval(parse(text=x))))

[1] 1 2 3 9

但这只能让我走到目前为止,因为当然,如果我传递一个也有单一值的载体,就像我原来的range列一样,它会抛出一个错误:

v1 <- c("1:3,7","9")

unlist(lapply(v1, function(x) eval(parse(text=x))))

Error in parse(text = x) : <text>:1:4: unexpected ','
1: 1:3,
^

此外,我无法自动将此解决方案应用于收件箱列,因为它返回单独的数字值,并且我需要一个字符串.感谢任何帮助.

EDIT
感谢大家非常有用的 comments !

推荐答案

以下修改为您提供您想要的.

v1 <- c("1:3,7","9")

unlist(lapply(v1, function(x) paste(eval(parse(text=paste0("c(",x,")"))), 
                                    collapse = ",")))

[1] "1,2,3,7" "9" 

R相关问答推荐

按条件计算观察次数

MCMC和零事件二元逻辑回归

如何使用`ggplot2::geom_segment()`或`ggspatial::geom_spatial_segment()`来处理不在格林威治中心的sf对象?

多重RHS固定估计

整数成随机顺序与约束R?

lightgbm发动机在tidymmodels中的L1正则化""

如何在Chart_Series()中更改轴值的 colored颜色 ?

如何改变x轴比例的列在面

使用整齐的计算(curl -curl )和杂音

如果可能,将数字列转换为整数,否则保留为数字

LOF中的插图短文字幕

根据列表中项目的名称合并数据框和列表

将标识符赋给事件序列,避免错误观察

自定义gggraph,使geom_abline图层仅在沿x轴的特定范围内显示

使用ifElse语句在ggploy中设置aes y值

R-找出存在其他变量的各种大小的所有组合

如何合并不同列表中的数据文件,包括基于名称的部分匹配,而不是一对一等价

如何使用循环从R中的聚合函数创建列,而不会在名称中给出&q;$&q;?

如何在shiny 的应用程序 map 视图宣传单中可视化单点

R没有按顺序显示我的有序系数?