Description
Utilities for text analysis.
Downloads
1.8K
Last 30 days
2849th
8.1K
Last 90 days
52K
Last year
Trend: -36.9% (30d vs prior 30d)
26
Last 30 days
125
Last 90 days
492
Last year
Trend: -35% (30d vs prior 30d)
8
Last 7 days
16
Last 30 days
0
All-time
autoCRAN-only: this name is served only by autoCRAN, so the count is exact.
150
Last 30 days
518
Last 90 days
3.1K
Last year
Trend: -45.1% (30d vs prior 30d)
CRAN Check Status
Show all 13 flavors
| Flavor | Status |
|---|---|
| r-devel-linux-x86_64-debian-clang | OK |
| r-devel-linux-x86_64-debian-gcc | OK |
| r-devel-linux-x86_64-fedora-clang | OK |
| r-devel-linux-x86_64-fedora-gcc | OK |
| r-devel-windows-x86_64 | NOTE |
| r-oldrel-macos-arm64 | NOTE |
| r-oldrel-macos-x86_64 | NOTE |
| r-oldrel-windows-x86_64 | NOTE |
| r-patched-linux-x86_64 | OK |
| r-release-linux-x86_64 | OK |
| r-release-macos-arm64 | NOTE |
| r-release-macos-x86_64 | NOTE |
| r-release-windows-x86_64 | NOTE |
Check details (7 non-OK)
tests
Running 'counting.R' [0s] Comparing 'counting.Rout' to 'counting.Rout.save' ... 26a27,28 > counting ... 9 string(s) using 19 nodes [0.00s] > writing ... 16 strings [0.00s] 47a50 > counting ... 9 string(s) using 19 nodes [0.00s] 49a53,54 > counting ... 9 string(s) using 19 nodes [0.00s] > writing ... 16 strings [0.00s] 70a76,77 > counting ... 2 string(s) using 5 nodes [0.00s] > writing ... 2 strings [0.00s] 77a85,86 > counting ... 2 string(s) using 5 nodes [0.00s] > writing ... 4 strings [0.00s] 86a96,97 > counting ... 2 string(s) using 6 nodes [0.00s] > writing ... 5 strings [0.00s] 96a108,109 > counting ... 2 string(s) using 6 nodes [0.00s] > writing ... 5 strings [0.00s] 106a120 > counting ... 2 string(s) using 5 nodes [0.00s] 108a123,124 > counting ... 2 string(s) using 5 nodes [0.00s] > writing ... 2 strings [0.00s] Running 'counting_useBytes.R' [0s] Comparing 'counting_useBytes.Rout' to 'counting_useBytes.Rout.save' ... 32a33,34 > counting ... 10 string(s) using 19 nodes [0.00s] > writing ... 19 strings [0.00s] 56a59 > counting ... 10 string(s) using 19 nodes [0.00s] 58a62,63 > counting ... 10 string(s) using 19 nodes [0.00s] > writing ... 19 strings [0.00s] 82a88,89 > counting ... 2 string(s) using 5 nodes [0.00s] > writing ... 2 strings [0.00s] 89a97,98 > counting ... 2 string(s) using 5 nodes [0.00s] > writing ... 5 strings [0.00s] 99a109,110 > counting ... 2 string(s) using 6 nodes [0.00s] > writing ... 6 strings [0.00s] 110a122,123 > counting ... 2 string(s) using 6 nodes [0.00s] > writing ... 6 strings [0.00s] 121a135 > counting ... 2 string(s) using 5 nodes [0.00s] 123a138,139 > counting ... 2 string(s) using 5 nodes [0.00s] > writing ... 2 strings [0.00s]
tests
Running ‘counting.R’ [0s/0s] Comparing ‘counting.Rout’ to ‘counting.Rout.save’ ...26a27,28 > counting ... 9 string(s) using 19 nodes [0.00s] > writing ... 16 strings [0.00s] 47a50 > counting ... 9 string(s) using 19 nodes [0.00s] 49a53,54 > counting ... 9 string(s) using 19 nodes [0.00s] > writing ... 16 strings [0.00s] 70a76,77 > counting ... 2 string(s) using 5 nodes [0.00s] > writing ... 2 strings [0.00s] 77a85,86 > counting ... 2 string(s) using 5 nodes [0.00s] > writing ... 4 strings [0.00s] 86a96,97 > counting ... 2 string(s) using 6 nodes [0.00s] > writing ... 5 strings [0.00s] 96a108,109 > counting ... 2 string(s) using 6 nodes [0.00s] > writing ... 5 strings [0.00s] 106a120 > counting ... 2 string(s) using 5 nodes [0.00s] 108a123,124 > counting ... 2 string(s) using 5 nodes [0.00s] > writing ... 2 strings [0.00s] Running ‘counting_useBytes.R’ [0s/0s] Comparing ‘counting_useBytes.Rout’ to ‘counting_useBytes.Rout.save’ ...32a33,34 > counting ... 10 string(s) using 19 nodes [0.00s] > writing ... 19 strings [0.00s] 56a59 > counting ... 10 string(s) using 19 nodes [0.00s] 58a62,63 > counting ... 10 string(s) using 19 nodes [0.00s] > writing ... 19 strings [0.00s] 82a88,89 > counting ... 2 string(s) using 5 nodes [0.00s] > writing ... 2 strings [0.00s] 89a97,98 > counting ... 2 string(s) using 5 nodes [0.00s] > writing ... 5 strings [0.00s] 99a109,110 > counting ... 2 string(s) using 6 nodes [0.00s] > writing ... 6 strings [0.00s] 110a122,123 > counting ... 2 string(s) using 6 nodes [0.00s] > writing ... 6 strings [0.00s] 121a135 > counting ... 2 string(s) using 5 nodes [0.00s] 123a138,139 > counting ... 2 string(s) using 5 nodes [0.00s] > writing ... 2 strings [0.00s]
tests
Running ‘counting.R’ [0s/1s] Comparing ‘counting.Rout’ to ‘counting.Rout.save’ ...26a27,28 > counting ... 9 string(s) using 19 nodes [0.00s] > writing ... 16 strings [0.00s] 47a50 > counting ... 9 string(s) using 19 nodes [0.00s] 49a53,54 > counting ... 9 string(s) using 19 nodes [0.00s] > writing ... 16 strings [0.00s] 70a76,77 > counting ... 2 string(s) using 5 nodes [0.00s] > writing ... 2 strings [0.00s] 77a85,86 > counting ... 2 string(s) using 5 nodes [0.00s] > writing ... 4 strings [0.00s] 86a96,97 > counting ... 2 string(s) using 6 nodes [0.00s] > writing ... 5 strings [0.00s] 96a108,109 > counting ... 2 string(s) using 6 nodes [0.00s] > writing ... 5 strings [0.00s] 106a120 > counting ... 2 string(s) using 5 nodes [0.00s] 108a123,124 > counting ... 2 string(s) using 5 nodes [0.00s] > writing ... 2 strings [0.00s] Running ‘counting_useBytes.R’ [0s/1s] Comparing ‘counting_useBytes.Rout’ to ‘counting_useBytes.Rout.save’ ...32a33,34 > counting ... 10 string(s) using 19 nodes [0.00s] > writing ... 19 strings [0.00s] 56a59 > counting ... 10 string(s) using 19 nodes [0.00s] 58a62,63 > counting ... 10 string(s) using 19 nodes [0.00s] > writing ... 19 strings [0.00s] 82a88,89 > counting ... 2 string(s) using 5 nodes [0.00s] > writing ... 2 strings [0.00s] 89a97,98 > counting ... 2 string(s) using 5 nodes [0.00s] > writing ... 5 strings [0.00s] 99a109,110 > counting ... 2 string(s) using 6 nodes [0.00s] > writing ... 6 strings [0.00s] 110a122,123 > counting ... 2 string(s) using 6 nodes [0.00s] > writing ... 6 strings [0.00s] 121a135 > counting ... 2 string(s) using 5 nodes [0.00s] 123a138,139 > counting ... 2 string(s) using 5 nodes [0.00s] > writing ... 2 strings [0.00s]
tests
Running 'counting.R' [0s] Comparing 'counting.Rout' to 'counting.Rout.save' ...26a27,28 > counting ... 9 string(s) using 19 nodes [0.00s] > writing ... 16 strings [0.00s] 47a50 > counting ... 9 string(s) using 19 nodes [0.00s] 49a53,54 > counting ... 9 string(s) using 19 nodes [0.00s] > writing ... 16 strings [0.00s] 70a76,77 > counting ... 2 string(s) using 5 nodes [0.00s] > writing ... 2 strings [0.00s] 77a85,86 > counting ... 2 string(s) using 5 nodes [0.00s] > writing ... 4 strings [0.00s] 86a96,97 > counting ... 2 string(s) using 6 nodes [0.00s] > writing ... 5 strings [0.00s] 96a108,109 > counting ... 2 string(s) using 6 nodes [0.00s] > writing ... 5 strings [0.00s] 106a120 > counting ... 2 string(s) using 5 nodes [0.00s] 108a123,124 > counting ... 2 string(s) using 5 nodes [0.00s] > writing ... 2 strings [0.00s] Running 'counting_useBytes.R' [0s] Comparing 'counting_useBytes.Rout' to 'counting_useBytes.Rout.save' ...32a33,34 > counting ... 10 string(s) using 19 nodes [0.00s] > writing ... 19 strings [0.00s] 56a59 > counting ... 10 string(s) using 19 nodes [0.00s] 58a62,63 > counting ... 10 string(s) using 19 nodes [0.00s] > writing ... 19 strings [0.00s] 82a88,89 > counting ... 2 string(s) using 5 nodes [0.00s] > writing ... 2 strings [0.00s] 89a97,98 > counting ... 2 string(s) using 5 nodes [0.00s] > writing ... 5 strings [0.00s] 99a109,110 > counting ... 2 string(s) using 6 nodes [0.00s] > writing ... 6 strings [0.00s] 110a122,123 > counting ... 2 string(s) using 6 nodes [0.00s] > writing ... 6 strings [0.00s] 121a135 > counting ... 2 string(s) using 5 nodes [0.00s] 123a138,139 > counting ... 2 string(s) using 5 nodes [0.00s] > writing ... 2 strings [0.00s]
tests
Running ‘counting.R’ [0s/0s] Comparing ‘counting.Rout’ to ‘counting.Rout.save’ ... 26a27,28 > counting ... 9 string(s) using 19 nodes [0.00s] > writing ... 16 strings [0.00s] 47a50 > counting ... 9 string(s) using 19 nodes [0.00s] 49a53,54 > counting ... 9 string(s) using 19 nodes [0.00s] > writing ... 16 strings [0.00s] 70a76,77 > counting ... 2 string(s) using 5 nodes [0.00s] > writing ... 2 strings [0.00s] 77a85,86 > counting ... 2 string(s) using 5 nodes [0.00s] > writing ... 4 strings [0.00s] 86a96,97 > counting ... 2 string(s) using 6 nodes [0.00s] > writing ... 5 strings [0.00s] 96a108,109 > counting ... 2 string(s) using 6 nodes [0.00s] > writing ... 5 strings [0.00s] 106a120 > counting ... 2 string(s) using 5 nodes [0.00s] 108a123,124 > counting ... 2 string(s) using 5 nodes [0.00s] > writing ... 2 strings [0.00s] Running ‘counting_useBytes.R’ [0s/0s] Comparing ‘counting_useBytes.Rout’ to ‘counting_useBytes.Rout.save’ ... 32a33,34 > counting ... 10 string(s) using 19 nodes [0.00s] > writing ... 19 strings [0.00s] 56a59 > counting ... 10 string(s) using 19 nodes [0.00s] 58a62,63 > counting ... 10 string(s) using 19 nodes [0.00s] > writing ... 19 strings [0.00s] 82a88,89 > counting ... 2 string(s) using 5 nodes [0.00s] > writing ... 2 strings [0.00s] 89a97,98 > counting ... 2 string(s) using 5 nodes [0.00s] > writing ... 5 strings [0.00s] 99a109,110 > counting ... 2 string(s) using 6 nodes [0.00s] > writing ... 6 strings [0.00s] 110a122,123 > counting ... 2 string(s) using 6 nodes [0.00s] > writing ... 6 strings [0.00s] 121a135 > counting ... 2 string(s) using 5 nodes [0.00s] 123a138,139 > counting ... 2 string(s) using 5 nodes [0.00s] > writing ... 2 strings [0.00s]
tests
Running ‘counting.R’ [0s/0s] Comparing ‘counting.Rout’ to ‘counting.Rout.save’ ... 26a27,28 > counting ... 9 string(s) using 19 nodes [0.00s] > writing ... 16 strings [0.00s] 47a50 > counting ... 9 string(s) using 19 nodes [0.00s] 49a53,54 > counting ... 9 string(s) using 19 nodes [0.00s] > writing ... 16 strings [0.00s] 70a76,77 > counting ... 2 string(s) using 5 nodes [0.00s] > writing ... 2 strings [0.00s] 77a85,86 > counting ... 2 string(s) using 5 nodes [0.00s] > writing ... 4 strings [0.00s] 86a96,97 > counting ... 2 string(s) using 6 nodes [0.00s] > writing ... 5 strings [0.00s] 96a108,109 > counting ... 2 string(s) using 6 nodes [0.00s] > writing ... 5 strings [0.00s] 106a120 > counting ... 2 string(s) using 5 nodes [0.00s] 108a123,124 > counting ... 2 string(s) using 5 nodes [0.00s] > writing ... 2 strings [0.00s] Running ‘counting_useBytes.R’ [0s/0s] Comparing ‘counting_useBytes.Rout’ to ‘counting_useBytes.Rout.save’ ... 32a33,34 > counting ... 10 string(s) using 19 nodes [0.00s] > writing ... 19 strings [0.00s] 56a59 > counting ... 10 string(s) using 19 nodes [0.00s] 58a62,63 > counting ... 10 string(s) using 19 nodes [0.00s] > writing ... 19 strings [0.00s] 82a88,89 > counting ... 2 string(s) using 5 nodes [0.00s] > writing ... 2 strings [0.00s] 89a97,98 > counting ... 2 string(s) using 5 nodes [0.00s] > writing ... 5 strings [0.00s] 99a109,110 > counting ... 2 string(s) using 6 nodes [0.00s] > writing ... 6 strings [0.00s] 110a122,123 > counting ... 2 string(s) using 6 nodes [0.00s] > writing ... 6 strings [0.00s] 121a135 > counting ... 2 string(s) using 5 nodes [0.00s] 123a138,139 > counting ... 2 string(s) using 5 nodes [0.00s] > writing ... 2 strings [0.00s]
tests
Running 'counting.R' [0s] Comparing 'counting.Rout' to 'counting.Rout.save' ... 26a27,28 > counting ... 9 string(s) using 19 nodes [0.00s] > writing ... 16 strings [0.00s] 47a50 > counting ... 9 string(s) using 19 nodes [0.00s] 49a53,54 > counting ... 9 string(s) using 19 nodes [0.00s] > writing ... 16 strings [0.00s] 70a76,77 > counting ... 2 string(s) using 5 nodes [0.00s] > writing ... 2 strings [0.00s] 77a85,86 > counting ... 2 string(s) using 5 nodes [0.00s] > writing ... 4 strings [0.00s] 86a96,97 > counting ... 2 string(s) using 6 nodes [0.00s] > writing ... 5 strings [0.00s] 96a108,109 > counting ... 2 string(s) using 6 nodes [0.00s] > writing ... 5 strings [0.00s] 106a120 > counting ... 2 string(s) using 5 nodes [0.00s] 108a123,124 > counting ... 2 string(s) using 5 nodes [0.00s] > writing ... 2 strings [0.00s] Running 'counting_useBytes.R' [0s] Comparing 'counting_useBytes.Rout' to 'counting_useBytes.Rout.save' ... 32a33,34 > counting ... 10 string(s) using 19 nodes [0.00s] > writing ... 19 strings [0.00s] 56a59 > counting ... 10 string(s) using 19 nodes [0.00s] 58a62,63 > counting ... 10 string(s) using 19 nodes [0.00s] > writing ... 19 strings [0.00s] 82a88,89 > counting ... 2 string(s) using 5 nodes [0.00s] > writing ... 2 strings [0.00s] 89a97,98 > counting ... 2 string(s) using 5 nodes [0.00s] > writing ... 5 strings [0.00s] 99a109,110 > counting ... 2 string(s) using 6 nodes [0.00s] > writing ... 6 strings [0.00s] 110a122,123 > counting ... 2 string(s) using 6 nodes [0.00s] > writing ... 6 strings [0.00s] 121a135 > counting ... 2 string(s) using 5 nodes [0.00s] 123a138,139 > counting ... 2 string(s) using 5 nodes [0.00s] > writing ... 2 strings [0.00s]
Additional Issues
Check History
NOTE 9 OK · 5 NOTE · 0 WARNING · 0 ERROR · 0 FAILURE Mar 14, 2026
tests
Running ‘counting.R’ [0s/0s] Comparing ‘counting.Rout’ to ‘counting.Rout.save’ ... 26a27,28 > counting ... 9 string(s) using 19 nodes [0.00s] > writing ... 16 strings [0.00s] 47a50 > counting ... 9 string(s) using 19 nodes [0.00s] 49a53,54 > count ...[truncated]... .00s] 110a122,123 > counting ... 2 string(s) using 6 nodes [0.00s] > writing ... 6 strings [0.00s] 121a135 > counting ... 2 string(s) using 5 nodes [0.00s] 123a138,139 > counting ... 2 string(s) using 5 nodes [0.00s] > writing ... 2 strings [0.00s]
tests
Running 'counting.R' [0s] Comparing 'counting.Rout' to 'counting.Rout.save' ... 26a27,28 > counting ... 9 string(s) using 19 nodes [0.00s] > writing ... 16 strings [0.00s] 47a50 > counting ... 9 string(s) using 19 nodes [0.00s] 49a53,54 > counting ...[truncated]... .00s] 110a122,123 > counting ... 2 string(s) using 6 nodes [0.00s] > writing ... 6 strings [0.00s] 121a135 > counting ... 2 string(s) using 5 nodes [0.00s] 123a138,139 > counting ... 2 string(s) using 5 nodes [0.00s] > writing ... 2 strings [0.00s]
tests
Running ‘counting.R’ [0s/0s] Comparing ‘counting.Rout’ to ‘counting.Rout.save’ ...26a27,28 > counting ... 9 string(s) using 19 nodes [0.00s] > writing ... 16 strings [0.00s] 47a50 > counting ... 9 string(s) using 19 nodes [0.00s] 49a53,54 > counti ...[truncated]... .00s] 110a122,123 > counting ... 2 string(s) using 6 nodes [0.00s] > writing ... 6 strings [0.00s] 121a135 > counting ... 2 string(s) using 5 nodes [0.00s] 123a138,139 > counting ... 2 string(s) using 5 nodes [0.00s] > writing ... 2 strings [0.00s]
tests
Running ‘counting.R’ [0s/0s] Comparing ‘counting.Rout’ to ‘counting.Rout.save’ ...26a27,28 > counting ... 9 string(s) using 19 nodes [0.00s] > writing ... 16 strings [0.00s] 47a50 > counting ... 9 string(s) using 19 nodes [0.00s] 49a53,54 > counti ...[truncated]... .00s] 110a122,123 > counting ... 2 string(s) using 6 nodes [0.00s] > writing ... 6 strings [0.00s] 121a135 > counting ... 2 string(s) using 5 nodes [0.00s] 123a138,139 > counting ... 2 string(s) using 5 nodes [0.00s] > writing ... 2 strings [0.00s]
tests
Running 'counting.R' [0s] Comparing 'counting.Rout' to 'counting.Rout.save' ...26a27,28 > counting ... 9 string(s) using 19 nodes [0.00s] > writing ... 16 strings [0.00s] 47a50 > counting ... 9 string(s) using 19 nodes [0.00s] 49a53,54 > counting ...[truncated]... .00s] 110a122,123 > counting ... 2 string(s) using 6 nodes [0.00s] > writing ... 6 strings [0.00s] 121a135 > counting ... 2 string(s) using 5 nodes [0.00s] 123a138,139 > counting ... 2 string(s) using 5 nodes [0.00s] > writing ... 2 strings [0.00s]
WARNING 8 OK · 5 NOTE · 1 WARNING · 0 ERROR · 0 FAILURE Mar 10, 2026
tests
Running ‘counting.R’ [0s/0s] Comparing ‘counting.Rout’ to ‘counting.Rout.save’ ... 26a27,28 > counting ... 9 string(s) using 19 nodes [0.00s] > writing ... 16 strings [0.00s] 47a50 > counting ... 9 string(s) using 19 nodes [0.00s] 49a53,54 > count ...[truncated]... .00s] 110a122,123 > counting ... 2 string(s) using 6 nodes [0.00s] > writing ... 6 strings [0.00s] 121a135 > counting ... 2 string(s) using 5 nodes [0.00s] 123a138,139 > counting ... 2 string(s) using 5 nodes [0.00s] > writing ... 2 strings [0.00s]
tests
Running 'counting.R' [0s] Comparing 'counting.Rout' to 'counting.Rout.save' ... 26a27,28 > counting ... 9 string(s) using 19 nodes [0.00s] > writing ... 16 strings [0.00s] 47a50 > counting ... 9 string(s) using 19 nodes [0.00s] 49a53,54 > counting ...[truncated]... .00s] 110a122,123 > counting ... 2 string(s) using 6 nodes [0.00s] > writing ... 6 strings [0.00s] 121a135 > counting ... 2 string(s) using 5 nodes [0.00s] 123a138,139 > counting ... 2 string(s) using 5 nodes [0.00s] > writing ... 2 strings [0.00s]
Rd files
prepare_Rd: ./man/textcnt.Rd:60: unknown macro '\bibcitet'
checkRd: (-1) textcnt.Rd:60: Lost braces
60 | \bibcitet{tau::Cavnar+Trenkle:1994}.
| ^
tests
Running ‘counting.R’ [0s/0s] Comparing ‘counting.Rout’ to ‘counting.Rout.save’ ...26a27,28 > counting ... 9 string(s) using 19 nodes [0.00s] > writing ... 16 strings [0.00s] 47a50 > counting ... 9 string(s) using 19 nodes [0.00s] 49a53,54 > counti ...[truncated]... .00s] 110a122,123 > counting ... 2 string(s) using 6 nodes [0.00s] > writing ... 6 strings [0.00s] 121a135 > counting ... 2 string(s) using 5 nodes [0.00s] 123a138,139 > counting ... 2 string(s) using 5 nodes [0.00s] > writing ... 2 strings [0.00s]
tests
Running ‘counting.R’ [0s/0s] Comparing ‘counting.Rout’ to ‘counting.Rout.save’ ...26a27,28 > counting ... 9 string(s) using 19 nodes [0.00s] > writing ... 16 strings [0.00s] 47a50 > counting ... 9 string(s) using 19 nodes [0.00s] 49a53,54 > counti ...[truncated]... .00s] 110a122,123 > counting ... 2 string(s) using 6 nodes [0.00s] > writing ... 6 strings [0.00s] 121a135 > counting ... 2 string(s) using 5 nodes [0.00s] 123a138,139 > counting ... 2 string(s) using 5 nodes [0.00s] > writing ... 2 strings [0.00s]
tests
Running 'counting.R' [0s] Comparing 'counting.Rout' to 'counting.Rout.save' ...26a27,28 > counting ... 9 string(s) using 19 nodes [0.00s] > writing ... 16 strings [0.00s] 47a50 > counting ... 9 string(s) using 19 nodes [0.00s] 49a53,54 > counting ...[truncated]... .00s] 110a122,123 > counting ... 2 string(s) using 6 nodes [0.00s] > writing ... 6 strings [0.00s] 121a135 > counting ... 2 string(s) using 5 nodes [0.00s] 123a138,139 > counting ... 2 string(s) using 5 nodes [0.00s] > writing ... 2 strings [0.00s]
Code & tests
Open call graph →Code intelligence has not been computed for this package yet.
Code
Structure
Lines of code
2,316
Files
26
Compiled share
53.2%
Has compiled src
Yes
Language breakdown
API
Exported functions
11
Internal functions
0
Recent export changes
Testing & CI
Has tests
Yes
Test-to-code ratio
0.04
testthat edition
–
CI present
No
CI type
[]
PR gated
No
Docs
Return-value doc rate
80%
\dontrun example ratio
0%
Roxygen coverage
100%
Has pkgdown
No
NEWS present
No
Health & Security signals
Informational signals; not verdicts.
on.exit coverage
–
Unsafe pattern score
0
Dep constraint coverage
–
Secret pattern count
0
Bundled 3rd-party code
2 items
Portability & License
Min R version
2.10
System requirements
–
C++ standard
–
License
GPL-2
License flags
SPDX valid, OSI approved
History
Versions
27
First release
2009-08-26
Latest release
2026-03-26
Avg cadence
157 days
Cold removal rate
100%
Dep drift
0
LOC over versions
Per-file churn detail lives in the source pipeline: https://github.com/r-observatory/cran-code-metrics.