如何在R中创建一个data.frame,表示玩家在游戏中一起开始的次数

pss*_*guy 5 r purrr

我刚刚开始研究网络分析,并希望首先创建一个数据框架,了解团队中的篮球运动员一起开始的频率

理想情况下,我想合并地图函数 purrr

所以以此为输入

game_1 <- c("Andy","Bob","Chris","Doug","Evan") 
game_2 <- c("Andy","Chris","Evan","Fred","George")  
Run Code Online (Sandbox Code Playgroud)

我想要这样的结果

n_1  n_2 games

Andy  Bob    1
Andy  Chris  2
Andy  Doug   1
Andy  Evan   2
Andy  Fred   1
Andy  George 1
Bob   Chris  1
Bob   Doug   1
Bob   Evan   1
Chris Doug   1
Chris Evan   2
Chris Fred   1
Chris George 1
Doug  Evan   1
Evan  Fred   1
Evan  George 1
Fred  George 1
Run Code Online (Sandbox Code Playgroud)

wha*_*lea 2

我的解决方案不使用purrr,但它应该有效

game_1 <- c("Andy","Bob","Chris","Doug","Evan") 
game_2 <- c("Andy","Chris","Evan","Fred","George")

# Combine all games into a single list for use with lapply
all_games <- list(game_1, game_2)

library(dplyr)

# Find combinations, sorted to ensure the earlier alphabets are in the first column
df <- do.call(rbind, lapply(all_games, function(x) { data.frame(t(combn(sort(x), 2)))  })) 

# Calculate the number of instances where 2 players appear with each other
df %>% group_by(X1, X2) %>% summarise(count = n())
# A tibble: 17 x 3
# Groups:   X1 [?]
# X1     X2 count
# <fctr> <fctr> <int>
#   1   Andy    Bob     1
# 2   Andy  Chris     2
# 3   Andy   Doug     1
# 4   Andy   Evan     2
# 5   Andy   Fred     1
# 6   Andy George     1
# 7    Bob  Chris     1
# 8    Bob   Doug     1
# 9    Bob   Evan     1
# 10  Chris   Doug     1
# 11  Chris   Evan     2
# 12  Chris   Fred     1
# 13  Chris George     1
# 14   Doug   Evan     1
# 15   Evan   Fred     1
# 16   Evan George     1
# 17   Fred George     1
Run Code Online (Sandbox Code Playgroud)