fastVoteR
is an R package with Efficient Rcpp Voting Methods for
Committee Selection.
Still under development.
Development version:
# install.packages("pak")
::pak("bblodfon/fastVoteR") pak
library(fastVoteR)
# 5 candidates
= paste0("V", seq_len(5))
candidates
candidates#> [1] "V1" "V2" "V3" "V4" "V5"
# 4 voters
= list(
voters c("V3", "V1", "V4"),
c("V3", "V1"),
c("V3", "V2"),
c("V2", "V4")
)
voters#> [[1]]
#> [1] "V3" "V1" "V4"
#>
#> [[2]]
#> [1] "V3" "V1"
#>
#> [[3]]
#> [1] "V3" "V2"
#>
#> [[4]]
#> [1] "V2" "V4"
set.seed(42)
# voter weights
= c(1.1, 2.5, 0.8, 0.9)
weights
# Approval voting (all voters equal)
rank_candidates(voters, candidates)
#> candidate score norm_score borda_score
#> <char> <num> <num> <num>
#> 1: V3 3 0.75 1.00
#> 2: V1 2 0.50 0.75
#> 3: V2 2 0.50 0.50
#> 4: V4 2 0.50 0.25
#> 5: V5 0 0.00 0.00
# Approval voting (voters unequal)
rank_candidates(voters, candidates, weights)
#> candidate score norm_score borda_score
#> <char> <num> <num> <num>
#> 1: V3 4.4 0.8301887 1.00
#> 2: V1 3.6 0.6792453 0.75
#> 3: V4 2.0 0.3773585 0.50
#> 4: V2 1.7 0.3207547 0.25
#> 5: V5 0.0 0.0000000 0.00
# Satisfaction Approval voting (voters unequal)
rank_candidates(voters, candidates, weights, method = "sav")
#> candidate score norm_score borda_score
#> <char> <num> <num> <num>
#> 1: V3 2.0166667 0.8175676 1.00
#> 2: V1 1.6166667 0.6554054 0.75
#> 3: V2 0.8500000 0.3445946 0.50
#> 4: V4 0.8166667 0.3310811 0.25
#> 5: V5 0.0000000 0.0000000 0.00
# Sequential Proportional Approval voting (voters equal)
rank_candidates(voters, candidates, method = "seq_pav")
#> candidate borda_score
#> <char> <num>
#> 1: V3 1.00
#> 2: V2 0.75
#> 3: V1 0.50
#> 4: V4 0.25
#> 5: V5 0.00
See vote and votesys R packages. For strictly ABC-voting rules, see abcvoting Python package.
Please note that the fastVoteR
project is released with
a Contributor
Code of Conduct. By contributing to this project, you agree to abide
by its terms.