使用包“sets”获取R中的set元素

时间:2014-03-04 02:44:38

标签: r set

我已经生成了以下集合。我怎样才能获得进一步使用的元素?
另外,我该如何删除{}?

> library(sets)
> A<-set("item1","item2","item3")
> A
{"item1", "item2", "item3"}
> A[1]
{}        #i would like to have {}
> A[2]
{}        #i would like to have "item1"
> A[3]    
{}        #i would like to have "item2"

其他问题是:

> A1<-set(paste("item",1:3,sep=""))
> A1
{<<character(3)>>}    # how can i generate the same result as A?

感谢您的温和回复!

1 个答案:

答案 0 :(得分:4)

对于作为数学对象的集合,元素顺序(以及可能的重复)没有区别。谈论集合的“第一”或“第二”或“第三”是“没有意义的”,因此包的作者没有提供允许您检索索引的子集方法"set"的元素 - 类对象。

要了解为什么这是一个好的设计决策,直接来自对象对集合的重要数学结构的忠实表示,请检查以下内容:

library(sets)
a <- set("item3", "item3", "item2", "item1")
b <- set("item1", "item2", "item3")
identical(a,b)
# [1] TRUE

如果您坚持使用数字索引提取集合元素, 总是可以执行以下操作:

set(as.character(a)[1])
# {"item1"}

关于你的第二个问题,你可以通过使用非常有用的函数do.call()得到你所得到的结果:

do.call(set, as.list(paste("item",1:3,sep="")))
# {"item1", "item2", "item3"}