Koe*_*VdB 8 string r dataframe
我在R中有一个包含拟南芥中旁系同源基因的数据框,看起来像这样:
gene_x gene_y
AT1 AT2
AT3 AT4
AT1 AT2
AT1 AT3
AT2 AT1
Run Code Online (Sandbox Code Playgroud)
与'ATx'对应的基因名称.
现在,对于下游分析,我希望仅继续使用唯一对.有些对只是简单的重复,可以在使用该duplicated()
功能时轻松删除.但是,上面的人工数据框中的第五行也是重复的,但是按相反的顺序,并且不会被函数拾取duplicated()
,也不会被unique()
函数拾取.
有关如何删除这些行的任何想法?
mydf <- read.table(text="gene_x gene_y
AT1 AT2
AT3 AT4
AT1 AT2
AT1 AT3
AT2 AT1", header=TRUE, stringsAsFactors=FALSE)
Run Code Online (Sandbox Code Playgroud)
下面是使用一个策略apply
,sort
,paste
,和duplicated
:
mydf[!duplicated(apply(mydf,1,function(x) paste(sort(x),collapse=''))),]
gene_x gene_y
1 AT1 AT2
2 AT3 AT4
4 AT1 AT3
Run Code Online (Sandbox Code Playgroud)
这是一个略有不同的解决方案:
mydf[!duplicated(lapply(as.data.frame(t(mydf), stringsAsFactors=FALSE), sort)),]
gene_x gene_y
1 AT1 AT2
2 AT3 AT4
4 AT1 AT3
Run Code Online (Sandbox Code Playgroud)
一种dplyr
可能是:
mydf %>%
group_by(grp = paste(pmax(gene_x, gene_y), pmin(gene_x, gene_y), sep = "_")) %>%
slice(1) %>%
ungroup() %>%
select(-grp)
gene_x gene_y
<chr> <chr>
1 AT1 AT2
2 AT1 AT3
3 AT3 AT4
Run Code Online (Sandbox Code Playgroud)
或者:
mydf %>%
group_by(grp = paste(pmax(gene_x, gene_y), pmin(gene_x, gene_y), sep = "_")) %>%
filter(row_number() == 1) %>%
ungroup() %>%
select(-grp)
Run Code Online (Sandbox Code Playgroud)
或者:
mydf %>%
group_by(grp = paste(pmax(gene_x, gene_y), pmin(gene_x, gene_y), sep = "_")) %>%
distinct(grp, .keep_all = TRUE) %>%
ungroup() %>%
select(-grp)
Run Code Online (Sandbox Code Playgroud)
或使用dplyr
和purrr
:
mydf %>%
group_by(grp = paste(invoke(pmax, .), invoke(pmin, .), sep = "_")) %>%
slice(1) %>%
ungroup() %>%
select(-grp)
Run Code Online (Sandbox Code Playgroud)
并且 as ofpurrr 0.3.0
invoke()
已退休,exec()
应改为使用:
mydf %>%
group_by(grp = paste(exec(pmax, !!!.), exec(pmin, !!!.), sep = "_")) %>%
slice(1) %>%
ungroup() %>%
select(-grp)
Run Code Online (Sandbox Code Playgroud)
或者:
df %>%
rowwise() %>%
mutate(grp = paste(sort(c(gene_x, gene_y)), collapse = "_")) %>%
group_by(grp) %>%
slice(1) %>%
ungroup() %>%
select(-grp)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1375 次 |
最近记录: |