|
47 | 47 | # Match bands and remove bands that are not in both time series
|
48 | 48 | names(py) <- tolower(names(py))
|
49 | 49 | names(px) <- tolower(names(px))
|
50 |
| - px <- px[,names(py)] |
51 |
| - py <- py[,names(px)] |
| 50 | + px <- px[,names(py),drop=FALSE] |
| 51 | + py <- py[,names(px),drop=FALSE] |
52 | 52 |
|
53 | 53 | # Compute local cost matrix
|
54 | 54 | cm <- proxy::dist(py, px, method = dist.method)
|
|
71 | 71 | a <- internals$startingMatrix[internals$N,1:internals$M]
|
72 | 72 | d <- internals$costMatrix[internals$N,1:internals$M]
|
73 | 73 | candidates <- data.frame(a, d)
|
74 |
| - candidates <- candidates[candidates$d==ave(candidates$d, candidates$a, FUN=min), ] |
| 74 | + candidates <- candidates[candidates$d==ave(candidates$d, candidates$a, FUN=min),,drop=FALSE] |
75 | 75 | candidates$b <- as.numeric(row.names(candidates))
|
76 | 76 |
|
77 | 77 | # Order maches by minimum TWDTW distance
|
|
97 | 97 | breaks <- seq(as.Date(from), as.Date(to), by = by)
|
98 | 98 | # Find best macthes for the intervals
|
99 | 99 | best_matches <- .bestmatches(
|
100 |
| - x = list(aligs[order(aligs$from, aligs$from),]), |
| 100 | + x = list(aligs[order(aligs$from, aligs$from),,drop=FALSE]), |
101 | 101 | m = length(y),
|
102 | 102 | n = length(breaks) - 1,
|
103 | 103 | levels = seq_along(y),
|
|
106 | 106 | fill = 99999)$IM
|
107 | 107 |
|
108 | 108 | # Build output
|
109 |
| - out <- as.data.frame(best_matches[,c(1,3)]) |
| 109 | + out <- as.data.frame(best_matches[,c(1,3),drop=FALSE]) |
110 | 110 | names(out) <- c("label", "Alig.N")
|
111 | 111 | out$from <- breaks[-length(breaks)]
|
112 | 112 | out$to <- breaks[-1]
|
113 |
| - out <- merge(out, aligs[, c("label", "Alig.N", "distance")], by.x = c("label", "Alig.N"), by.y = c("label", "Alig.N"), all.x = TRUE) |
| 113 | + out <- merge(out, aligs[, c("label", "Alig.N", "distance"),drop=FALSE], by.x = c("label", "Alig.N"), by.y = c("label", "Alig.N"), all.x = TRUE) |
114 | 114 | out <- out[order(out$from), names(out)!="Alig.N"]
|
115 |
| - if(any(out$label==0)) out[out$label==0,]$label <- fill |
| 115 | + if(any(out$label==0)) out[out$label==0,,drop=FALSE]$label <- fill |
116 | 116 | return(out)
|
117 | 117 | }
|
118 | 118 |
|
0 commit comments