如何在每列的每个字母/元素后添加分隔符

时间:2016-01-19 07:14:26

标签: r

我有一个名为mydf的数据框。我想在每列中的每个元素后添加/并获得结果。

是myDF

rowname      val1   val2   val3
1             00    100     111
2             01    11      11
3             00    01      01

结果

rowname        val1      val2    val3
    1             0/0    1/0/0    1/1/1
    2             0/1    1/1      1/1
    3             0/0    0/1      0/1

2 个答案:

答案 0 :(得分:3)

只需在每一列上应用以下逻辑。

gsub("(.)(?=.)", "\\1/", x, perl=TRUE)

DEMO

答案 1 :(得分:3)

我们可以使用lapply遍历'val'列并使用gsub使用正则表达式环绕模式,并替换为/

mydf[-1] <- lapply(mydf[-1], function(x) 
           gsub('(?<=\\d)(?=\\d)', '/', x, perl=TRUE))
mydf
#   rowname val1  val2  val3
# 1       1  0/0 1/0/0 1/1/1
# 2       2  0/1   1/1   1/1
# 3       3  0/0   0/1   0/1

数据

mydf <- structure(list(rowname = c("1", "2", "3"), 
val1 = c("00", "01", 
"00"), val2 = c("100", "11", "01"), val3 = c("111", "11", "01"
 )), .Names = c("rowname", "val1", "val2", "val3"),
 class = "data.frame", row.names = c(NA, -3L))