【问题标题】:How to use expand.grid on a dataframe of characters如何在字符数据帧上使用 expand.grid
【发布时间】:2015-11-01 09:20:21
【问题描述】:

这是我的 data.frame df 的样子:

df
color   shape   type
red     oval    model 1
blue    square  model 4

我需要的是使用expand.grid 组合不同的行。这是我尝试过的:

row1 <- df[1,]
row2 <- df[2,]
output <- expand.grid( row1, row2)

但是,我收到一个错误,因为 row1 不是列表向量。

head(df) 我的原始数据框:

       position1    position2  position3       position4       position5
1          razor   windranger  dark seer  spirit breaker   bounty hunter
2   blood seeker ember spirit       lina          techie  spirit breaker
3           luna storm spirit  dark seer          rubick  winter wayvern
4 phantom lancer storm spirit  dark seer            lina        silencer
5 phantom lancer         lina  dark seer          tuskar  winter wayvern
6     gryocopter shadow fiend     tuskar          visage     earthshaker

str(df) 我原来的data.frame:

'data.frame':   42 obs. of  5 variables:
 $ position1: Factor w/ 15 levels "antimage","blood seeker",..: 13 2 9 12 12 5 9 13 12 4 ...
 $ position2: Factor w/ 12 levels "dragon knight",..: 11 2 9 9 4 7 7 6 4 10 ...
 $ position3: Factor w/ 14 levels "bristle","brood mother",..: 4 6 4 4 4 12 12 3 12 13 ...
 $ position4: Factor w/ 20 levels "bounty hunter",..: 15 16 11 7 17 18 11 12 1 17 ...
 $ position5: Factor w/ 13 levels "ancient apparition",..: 2 10 12 9 12 6 6 4 13 11 ...`

【问题讨论】:

  • 如果您能指出预期的输出,我认为会有所帮助。

标签: r


【解决方案1】:

最好提供你的代码...试试

row1 <- unlist(df[1,])

否则df[1,] 是单行数据帧。


我会在@firelittle 回复后编辑这篇文章。这是一个例子:

> dd <- data.frame(x=factor(LETTERS[1:2]), y=factor(LETTERS[3:4]))
> dd
  x y
1 A C
2 B D
> expand.grid(unlist(dd[1,]), unlist(dd[2,]))
  Var1 Var2
1    A    B
2    C    B
3    A    D
4    C    D

这是你的预期输出吗?

【讨论】:

  • 数据框只是一个例子。我的原始数据框是 5 列和 100 行。当我按照您的步骤操作时,结果结合了我在数据框中的其他级别。我也是 R 新手,我不知道如何提供请求的代码
  • @firelitte 请编辑您的帖子并提供head(df)str(df) 的输出。
  • @firelitte 谢谢。请看我的编辑。我没有发现任何问题。
  • 天啊!!我终于意识到我真正的问题是什么。你的方法给了我正确的输出,而且从来没有不正确。在我的输出中,我实际上想映射关系一次而不是两次。例如 A B;和 B A 对我来说是一样的,我只需要 1 个输出。我想这是 expand.grid 函数的限制。非常感谢!!我将尝试找到如何将矩阵切成两半。如果你也知道如何做到这一点,将不胜感激。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-15
  • 2015-04-23
  • 1970-01-01
  • 2022-01-25
  • 2023-03-16
相关资源
最近更新 更多