使用值向量展开数据框中的每一行来填充它

use*_*007 1 r tidyverse

我正在使用 中的数据框R。我需要扩展我的数据框df1

#Code
df1 <- data.frame(v=paste0('P',1:3))
Run Code Online (Sandbox Code Playgroud)

这样每一行都用一个向量“扩展” val

#Code vector
val <- c("cherry", "apple", "kiwi")
Run Code Online (Sandbox Code Playgroud)

最后我想得到这个输出:

df2
   v    val
1 P1 cherry
2 P1  apple
3 P1   kiwi
4 P2 cherry
5 P2  apple
6 P2   kiwi
7 P3 cherry
8 P3  apple
9 P3   kiwi
Run Code Online (Sandbox Code Playgroud)

非常感谢。如果可能的话,最好使用dplyr或解决方案。tidyr

akr*_*run 5

我们可以使用expand.grid来自base R

\n
expand.grid(c(list(val = val), df1))[2:1]\n  v    val\n1 P1 cherry\n2 P1  apple\n3 P1   kiwi\n4 P2 cherry\n5 P2  apple\n6 P2   kiwi\n7 P3 cherry\n8 P3  apple\n9 P3   kiwi\n
Run Code Online (Sandbox Code Playgroud)\n
\n

或者与crossing

\n
library(tidyr)\ncrossing(df1, val)\n
Run Code Online (Sandbox Code Playgroud)\n

-输出

\n
# A tibble: 9 \xc3\x97 2\n  v     val   \n  <chr> <chr> \n1 P1    apple \n2 P1    cherry\n3 P1    kiwi  \n4 P2    apple \n5 P2    cherry\n6 P2    kiwi  \n7 P3    apple \n8 P3    cherry\n9 P3    kiwi  \n
Run Code Online (Sandbox Code Playgroud)\n