首页 > 解决方案 > R 唯一表达式

问题描述

我正在使用gramEvol 包生成表达式,然后用于进一步的数据处理。

有时,结果包含重复的表达式。

我怎样才能只保留独特的表达方式?(使用独特的功能不起作用,因为它没有为表达式定义)

这是一个演示该问题的可重现示例:

data("iris")
expr <- sapply(colnames(iris), as.expression)
expr
#expression(Sepal.Length = "Sepal.Length", Sepal.Width = "Sepal.Width", 
#    Petal.Length = "Petal.Length", Petal.Width = "Petal.Width", 
#    Species = "Species")
unique(expr)
#Error in unique.default(expr) : 
#  unimplemented type 'expression' in 'HashTableSetup'
expr <- c(expr, expr) # concat works
expr
#expression(Sepal.Length = "Sepal.Length", Sepal.Width = "Sepal.Width", 
#    Petal.Length = "Petal.Length", Petal.Width = "Petal.Width", 
#    Species = "Species", Sepal.Length = "Sepal.Length", Sepal.Width = #"Sepal.Width", Petal.Length = "Petal.Length", Petal.Width = "Petal.Width", 
#    Species = "Species")
unique(expr)
#Error in unique.default(expr) : 
#  unimplemented type 'expression' in 'HashTableSetup' 

标签: rexpression

解决方案


这会将表达式转换为列表并使用duplicated

expr[!duplicated(as.list(expr))]
#expression(Sepal.Length = "Sepal.Length", Sepal.Width = "Sepal.Width", 
#    Petal.Length = "Petal.Length", Petal.Width = "Petal.Width", 
#    Species = "Species")

推荐阅读