用语句用R中的另一个相邻行替换行

时间:2018-12-02 03:06:36

标签: r dataframe if-statement

我有一个问题可能很难解决,但是我正在尝试。

>data

       xloc     genes
1 XLOC_000002 AT1G01046
2 XLOC_000006 AT1G01130
3 XLOC_000009 CUFF.14.1
4 XLOC_000010 CUFF.15.1
5 XLOC_000027 AT1G01448
6 XLOC_000027 AT1G01448

我想将两列连接起来,用第一列中的元素替换包含“ CUFF”的行,如下所示:

       xloc     genes      x
1 XLOC_000002 AT1G01046 AT1G01046  
2 XLOC_000006 AT1G01130 AT1G01130
3 XLOC_000009 CUFF.14.1 XLOC_000009
4 XLOC_000010 CUFF.15.1 XLOC_000010
5 XLOC_000027 AT1G01448 AT1G01448
6 XLOC_000027 AT1G01448 AT1G01448

我正在尝试:

data$x <- ifelse(grepl("^CUFF",data$genes),data$xloc, data$genes)

但是输出是这样的:

        xloc     genes  x
1 XLOC_000002 AT1G01046  5
2 XLOC_000006 AT1G01130 16
3 XLOC_000009 CUFF.14.1  9
4 XLOC_000010 CUFF.15.1 10
5 XLOC_000027 AT1G01448 51
6 XLOC_000027 AT1G01448 51

请帮助

致谢

1 个答案:

答案 0 :(得分:1)

问题在于列class的列factor被强制为其整数存储模式值。将列转换为character,它应该可以工作

data$x <- ifelse(grepl("^CUFF",data$genes),
           as.character(data$xloc), as.character(data$genes))