12
12
# ' \item issue_cmts Comments on issues
13
13
# ' \item issues Issues opened by user.
14
14
# ' }
15
+ # ' @return A `data.frame` of pairwise user logins, and proportions of overlap
16
+ # ' betwen repositories in the six variables described above.
15
17
# ' @noRd
16
18
user_relation_matrices <- function (user_data ) {
17
19
18
20
user_names <- names (user_data )
19
21
user_data <- add_user_login_cols (user_data ) | >
20
22
combine_user_data ()
21
23
22
- cmts <- user_relate_commits (user_data , user_names )
24
+ # Pre-processing to name grouping column "repo" and count column "n":
25
+ user_data $ commit_cmt $ repo <-
26
+ paste0 (user_data $ commit_cmt $ org , user_data $ commit_cmt $ repo )
27
+
28
+ user_data $ followers <-
29
+ dplyr :: rename (user_data $ followers , repo = followers ) | >
30
+ dplyr :: mutate (n = 1L )
31
+ user_data $ following <-
32
+ dplyr :: rename (user_data $ following , repo = following ) | >
33
+ dplyr :: mutate (n = 1L )
34
+
35
+ user_data $ issue_cmts <-
36
+ dplyr :: rename (user_data $ issue_cmts , repo = org_repo ) | >
37
+ dplyr :: group_by (repo , login ) | >
38
+ dplyr :: summarise (n = sum (num_comments ), .groups = " keep" )
39
+ user_data $ issues <- dplyr :: rename (user_data $ issues , repo = org_repo ) | >
40
+ dplyr :: group_by (repo , login ) | >
41
+ dplyr :: summarise (n = dplyr :: n (), .groups = " keep" )
42
+
43
+ overlap <- lapply (names (user_data ), function (n ) {
44
+ user_data [[n ]] <- user_relate_fields (user_data , user_names , what = n )
45
+ })
46
+
47
+ res <- dplyr :: left_join (overlap [[1 ]], overlap [[2 ]], by = c (" login1" , " login2" )) | >
48
+ dplyr :: left_join (overlap [[3 ]], by = c (" login1" , " login2" )) | >
49
+ dplyr :: left_join (overlap [[4 ]], by = c (" login1" , " login2" )) | >
50
+ dplyr :: left_join (overlap [[5 ]], by = c (" login1" , " login2" )) | >
51
+ dplyr :: left_join (overlap [[6 ]], by = c (" login1" , " login2" ))
52
+
53
+ return (res )
23
54
}
24
55
25
56
# ' Add 'login' columns to all user data, so each element can be combined.
@@ -67,17 +98,22 @@ combine_user_data <- function (user_data) {
67
98
return (data )
68
99
}
69
100
70
- user_relate_commits <- function (user_data , user_names ) {
101
+ user_relate_fields <- function (user_data , user_names , what = " commits " ) {
71
102
72
103
user_combs <- t (combn (user_names , m = 2L ))
104
+ if (what == " commits" ) {
105
+ user_data [[what ]] <- dplyr :: rename (user_data [[what ]], n = num_commits )
106
+ } else if (what == " commit_cmt" ) {
107
+ user_data $ commit_cmt $ n <- 1L
108
+ }
73
109
74
110
res <- apply (user_combs , 1 , function (i ) {
75
- cmt1 <- dplyr :: filter (user_data $ commits , login == i [1 ]) | >
111
+ cmt1 <- dplyr :: filter (user_data [[ what ]] , login == i [1 ]) | >
76
112
dplyr :: group_by (repo ) | >
77
- dplyr :: summarise (n1 = sum (num_commits ))
78
- cmt2 <- dplyr :: filter (user_data $ commits , login == i [2 ]) | >
113
+ dplyr :: summarise (n1 = sum (n ))
114
+ cmt2 <- dplyr :: filter (user_data [[ what ]] , login == i [2 ]) | >
79
115
dplyr :: group_by (repo ) | >
80
- dplyr :: summarise (n2 = sum (num_commits ))
116
+ dplyr :: summarise (n2 = sum (n ))
81
117
overlap <- dplyr :: inner_join (cmt1 , cmt2 , by = " repo" )
82
118
83
119
res <- 0
@@ -88,10 +124,12 @@ user_relate_commits <- function (user_data, user_names) {
88
124
return (res )
89
125
})
90
126
91
- data.frame (
127
+ res <- data.frame (
92
128
login1 = user_combs [, 1 ],
93
129
login2 = user_combs [, 2 ],
94
- overlap = res ,
95
- what = " commits"
130
+ res
96
131
)
132
+ names (res ) [3 ] <- what
133
+
134
+ return (res )
97
135
}
0 commit comments