我正在使用 中的数据框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
我们可以使用expand.grid来自base R
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\nRun Code Online (Sandbox Code Playgroud)\n或者与crossing
library(tidyr)\ncrossing(df1, val)\nRun 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 \nRun Code Online (Sandbox Code Playgroud)\n