@@ -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