【问题标题】:How to expand.grid with string elements (the half!)如何用字符串元素扩展.grid(一半!)
【发布时间】:2015-01-14 18:32:38
【问题描述】:

我有以下展开网格的结果:

d

注意向量可能长于 3 和字符串长度 可能更大或不同的模式?

我想要的是创建一个字符串组合 但只有所有组合的一半:

  Var1 Var2
1    x    x
2    y    x
3    y    y
4    z    y
5    x    z
6    z    z

【问题讨论】:

    标签: r dataframe


    【解决方案1】:

    您可以删除重复项 (x - y == y - x),首先对数据中的行进行排序,然后使用 duplicated 删除重复项:

    d2 = t(apply(d, 1, sort))
    d2[!duplicated(d2),]
         [,1] [,2]
    [1,] "x"  "x" 
    [2,] "x"  "y" 
    [3,] "x"  "z" 
    [4,] "y"  "y" 
    [5,] "y"  "z" 
    [6,] "z"  "z" 
    

    或者,您可以使用combn 来获取组合,然后您只需要修改一些数据即可获得所需的内容:

    levs = c("x", "y", "z")
    comb_level1 = combn(levs, 1)
    comb_level2 = combn(levs, 2)
    t(cbind(rbind(comb_level1, comb_level1), comb_level2))
         [,1] [,2]
    [1,] "x"  "x" 
    [2,] "y"  "y" 
    [3,] "z"  "z" 
    [4,] "x"  "y" 
    [5,] "x"  "z" 
    [6,] "y"  "z"
    

    我认为使用duplicated 的解决方案更好。

    【讨论】:

      猜你喜欢
      • 2018-11-26
      • 1970-01-01
      • 1970-01-01
      • 2012-09-22
      • 2014-12-30
      • 2019-05-27
      • 1970-01-01
      • 1970-01-01
      • 2015-08-29
      相关资源
      最近更新 更多