r - 如何用字符串元素扩展.grid(一半!)

标签 r dataframe

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

d <- expand.grid(c("x","y","z"),c("x","y","z"))

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

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

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

最佳答案

您可以首先去除重复项 (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 的解决方案更好。

关于r - 如何用字符串元素扩展.grid(一半!),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17017374/

相关文章:

r - 使用向量索引 R 中的 data.frame

r - 将儒略日期转换为数据框中的日历日期

python - 从对象内部方法输出 Python pandas 数据框的表格式

python - 按日期对行进行分组并覆盖 NaN 值

javascript - Shiny :如何正确包含 Shiny 的 HTML

重组 r 和 ggplot2 的 csv 数据

r - 为什么na.rm在我的代码中不起作用?

python - Pandas 根据多个条件过滤行

python - 在 Pandas 中合并具有相同列名但列数不同的两个数据框

r - 当分组因子有缺失值时,基本 R 中的箱线图能否显示 'NA'?