Diff of /R/calc_pcareduceres.R [000000] .. [28e211]

Switch to unified view

a b/R/calc_pcareduceres.R
1
calc_pcareduceres <- function(obj, reduce) {
2
  if (!reduce) {
3
    return(t(obj))
4
  }
5
  df <- data.frame(x = 1:20)
6
  df$sdev <- prcomp(t(obj), scale = TRUE)$sdev[1:20]
7
  optpoint <- which.min(
8
    vapply(
9
      2:10,
10
      function(i) {
11
        data$x2 <- pmax(0, data$x - i)
12
        sum(lm(sdev ~ x + x2, df)$residuals^2)
13
      },
14
      0
15
    )
16
  )
17
  pcadim <- optpoint + 1
18
  tmpdata <- t(apply(obj, 1, scale))
19
  colnames(tmpdata) <- colnames(obj)
20
  tmppc <- prcomp(t(tmpdata), scale = TRUE)
21
  return(t(tmpdata) %*% tmppc$rotation[, 1:pcadim])
22
}