删除R中命名对象中的冗余条目

时间:2013-11-27 09:32:23

标签: r

使用此数据集

1415967_at 56258
1415968_a_at 20249
1415963_at 20249
1415966_a_at 16483

我可以设法convert to a named-list:

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_at1415963_at是多余的 因为数值相同:20249。 因此,我们只保留第一个1415968_a_at。 实际上,重复的数量可以变化(超过2)。

这样做的方法是什么?

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

有关于如何选择的更复杂的代码