使用此数据集
1415967_at 56258
1415968_a_at 20249
1415963_at 20249
1415966_a_at 16483
dat <- read.table("http://dpaste.com/1484733/plain/")
nl <- setNames(as.list(dat[[2]]), dat[[1]])
稍后使用这个特定的命名对象
我们想删除多余的命名条目(使用_at
),
其中数值是多余的。
我们只会保留第一次。
导致这个新的非冗余命名对象:
$`1415967_at`
[1] 56258
$`1415968_a_at`
[1] 20249
$`1415966_a_at`
[1] 16483
在上面的示例中,1415968_a_at
和1415963_at
是多余的
因为数值相同:20249
。
因此,我们只保留第一个1415968_a_at
。
实际上,重复的数量可以变化(超过2)。
这样做的方法是什么?
答案 0 :(得分:3)
您可以使用以下内容排除重复项:
n1[!duplicated(n1)]
# $`1415967_at`
# [1] 56258
#
# $`1415968_a_at`
# [1] 20249
#
# $`1415966_a_at`
# [1] 16483
答案 1 :(得分:1)
或者使用plyr
如何添加更复杂的函数来保存哪一个:
require(plyr)
dat <- read.table("http://dpaste.com/1484733/plain/")
dat <-ddply(dat,.(V2),summarize,V1=V1[1])
nl <- setNames(as.list(dat[[2]]), dat[[1]])
e.g。在ddply()
函数中,您可以替换:
V1=V1[1] # PICK THE FIRST
有关于如何选择的更复杂的代码