如何在字符数据帧上使用expand.grid

时间:2015-08-09 09:57:00

标签: r

以下是我的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 ...`

1 个答案:

答案 0 :(得分: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

这是你的预期产量吗?