R:';乘';数据帧字符串列

R:';乘';数据帧字符串列,r,dataframe,R,Dataframe,不知道这个操作叫什么,谷歌也没有帮助 假设我有两个简单的数据帧,如下所示: df1 <- data.frame(factor1 = c("a", "b", "c")) df2 <- data.frame(factor2 = c("x", "y", "z")) > df1 factor1 1 a 2 b 3 c > df2 factor2 1 x 2 y 3 z factor1 fac

不知道这个操作叫什么,谷歌也没有帮助

假设我有两个简单的数据帧,如下所示:

df1 <- data.frame(factor1 = c("a", "b", "c"))
df2 <- data.frame(factor2 = c("x", "y", "z"))


> df1
  factor1
1       a
2       b
3       c
> df2
  factor2
1       x
2       y
3       z
  factor1 factor2
1       a       x
2       a       y
3       a       z
4       b       x
5       b       y
6       b       z
7       c       x
8       c       y
9       c       z
我认为这种操作可能涉及数据帧相乘,但这不起作用:

> df1 * df2
  factor1
1      NA
2      NA
3      NA
Warning message:
In Ops.factor(left, right) : ‘*’ not meaningful for factors
它是两个数据帧的笛卡尔乘积,当没有通用名称时,可以使用
合并

merge(df1, df2)   

#  factor1 factor2
#1       a       x
#2       b       x
#3       c       x
#4       a       y
#5       b       y
#6       c       y
#7       a       z
#8       b       z
#9       c       z
或者更明确地说:

merge(df1, df2, by=c())
根据
?merge
,当没有可连接的列时,它返回两个数据帧的笛卡尔乘积:

如果by或by.x和by.y的长度均为0(长度为零的向量或 NULL),结果r是x和y的笛卡尔积,即。, dim(r)=c(nrow(x)*nrow(y),ncol(x)+ncol(y))


这里是另一个带有
扩展.grid

Map(expand.grid, factor1 = df1, factor2 = df2)$factor
#    factor1 factor2
#1       a       x
#2       b       x
#3       c       x
#4       a       y
#5       b       y
#6       c       y
#7       a       z
#8       b       z
#9       c       z

非常感谢。这些年来,我一直不知道
merge()
函数中存在此功能。这里有相同的问题: