>>>>> Colin Gillespie writes:

> Hi,
> I've noticed that a few packages duplicate their Imports/Suggest.

> For example, https://cran.r-project.org/web/packages/landpred/index.html
> lists quantreg twice. It's also a problem for

> "landpred","LLMing", "MDgof", "NBDCtools", "PDXpower", "RHclust",
> "toscca", "wrappedtools"

> as well.

> Suggests has the same problem:

> "echarts4r" ,"fgdiR", "httkexamples", "toro", "treestats"

> E.g. https://cran.r-project.org/web/packages/echarts4r/index.html has
> data.tree listed twice

Colin,

Indeed, running something like

a <- available.packages()
a <- a[startsWith(a[, "Repository"], getOption("repos")["CRAN"]), ]
y <- data.frame(Package = a[, "Package"])
fields <- c("Imports", "Depends", "LinkingTo", "Suggests")
for(f in fields)
    y[[f]] <- lapply(a[, f], tools:::.extract_dependency_package_names)
z1 <- lapply(fields,
             function(f) {
                 d <- y[[f]]
                 i <- which(vapply(d, anyDuplicated, 0) > 0)
                 x <- lapply(d[i], function(e) sort(e[duplicated(e)]))
                 names(x) <- y$Package[i]
                 x
             })
names(z1) <- fields

z3 <- data.frame(package = unlist(lapply(z1, names), use.names = FALSE),
                 field = rep.int(names(z1), lengths(z1)))

currently finds 

R> z3
         package     field
1          crane   Imports
2  FinanceGraphs   Imports
3       landpred   Imports
4         LLMing   Imports
5   MatrixModels   Imports
6          MDgof   Imports
7      NBDCtools   Imports
8       PDXpower   Imports
9        RHclust   Imports
10        toscca   Imports
11  wrappedtools   Imports
12       bmgarch LinkingTo
13         ctsem LinkingTo
14     echarts4r  Suggests
15         fgdiR  Suggests
16  httkexamples  Suggests
17          toro  Suggests
18     treestats  Suggests

Now actually using the dependencies goes via
tools:::.split_dependencies() which runs unique() after splitting,
reducing the above via

z3 <- Map(function(p, f) {
               d <- tools:::.split_dependencies(a[p, f])
               d <- split(d, names(d))
               d[lengths(d) > 1]
          },
          z3$package, z3$field)

to

R> names(Filter(length, z3))
[1] "crane"         "FinanceGraphs" "MatrixModels" 

The last is from having

  Imports: stats, methods, Matrix (>= 1.6-0), Matrix(< 1.8-0)

which shows that having duplicated package names is actually ok.  The
other two are from having

  scales, scales (>= 1.3.0)
  utils (>= 4.0.0), utils (>= 4.5.0)

in Imports: likely unintended but harmless afaict.

> Related (but a CRAN question): Could the imports/Suggests be listed
> alphabetically on CRAN pages?

I'll take a look ...

Vest
-k

> Colin

> ______________________________________________
> [email protected] mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel

______________________________________________
[email protected] mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel

Reply via email to