Skip to content

Commit 6f5d1d2

Browse files
Merge pull request #732 from thomvolker/ampute
Fix bug ampute(run = FALSE)
2 parents 9204329 + 8070084 commit 6f5d1d2

File tree

1 file changed

+10
-9
lines changed

1 file changed

+10
-9
lines changed

R/ampute.R

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -208,17 +208,16 @@ ampute <- function(data, prop = 0.5, patterns = NULL, freq = NULL,
208208
if (is.null(data)) {
209209
stop("Argument data is missing, with no default", call. = FALSE)
210210
}
211-
data.in <- data # preserve an original set to inject the NA's in later
212211
data <- check.dataform(data)
213212
if (anyNA(data)) {
214213
stop("Data cannot contain NAs", call. = FALSE)
215214
}
216215
if (ncol(data) < 2) {
217216
stop("Data should contain at least two columns", call. = FALSE)
218217
}
219-
data <- data.frame(data)
218+
numdata <- data
220219
if (any(vapply(data, Negate(is.numeric), logical(1))) && mech != "MCAR") {
221-
data <- as.data.frame(sapply(data, as.numeric))
220+
numdata <- as.data.frame(sapply(data, as.numeric))
222221
warning("Data is made numeric internally, because the calculation of weights requires numeric data",
223222
call. = FALSE
224223
)
@@ -394,9 +393,10 @@ ampute <- function(data, prop = 0.5, patterns = NULL, freq = NULL,
394393
# Create empty objects
395394
P <- NULL
396395
scores <- NULL
397-
missing.data <- NULL
396+
data.in <- NULL
398397
# Apply function (run = TRUE) or merely return objects (run = FALSE)
399398
if (run) {
399+
data.in <- data
400400
# Assign cases to the patterns according probs
401401
# Because 0 and 1 will be used for missingness,
402402
# the numbering of the patterns will start from 2
@@ -422,7 +422,7 @@ ampute <- function(data, prop = 0.5, patterns = NULL, freq = NULL,
422422
} else {
423423
scores <- sumscores(
424424
P = P,
425-
data = data,
425+
data = numdata,
426426
std = std,
427427
weights = weights,
428428
patterns = patterns
@@ -443,19 +443,19 @@ ampute <- function(data, prop = 0.5, patterns = NULL, freq = NULL,
443443
)
444444
}
445445
}
446-
missing.data <- data
447446
for (i in seq_len(nrow(patterns.new))) {
448447
if (any(P == (i + 1))) {
449-
missing.data[R[[i]] == 0, patterns.new[i, ] == 0] <- NA
448+
data.in[R[[i]] == 0, patterns.new[i, ] == 0] <- NA
450449
}
451450
}
452451
}
453452

453+
454454
# Create return object
455455
names(patterns.new) <- names(data)
456456
names(weights) <- names(data)
457457
call <- match.call()
458-
data.in[is.na(data.frame(missing.data))] <- NA
458+
459459
result <- mads(
460460
call = call,
461461
prop = prop,
@@ -469,7 +469,8 @@ ampute <- function(data, prop = 0.5, patterns = NULL, freq = NULL,
469469
amp = data.in,
470470
cand = P - 1,
471471
scores = scores,
472-
data = as.data.frame(data))
472+
data = data
473+
)
473474
return(result)
474475
}
475476

0 commit comments

Comments
 (0)