On 13-09-08 6:46 AM, Ben Harrison wrote:
Hello,
I wish to create a copy of a data frame, but with missing values replaced
with NAs.

I thought I should be able to do it in one step using parentheses to group
the statements and force those inside the parens to execute first:

df <- (BWS6[BWS6 < -998] <- NA)

But all this does is assign NA to df, as described in ?"[" for the case
with no parens.

Can I do this in some way? It's no great problem of course to have two
separate statements, just curious.

This isn't an order of execution issue. Your parenthesized assignment modifies BWS6, and that's not what you want to do.

If you convert BWS6 to a matrix instead of a dataframe, you could use

res <- ifelse(BWS6 < -998, NA, BWS6)

but ifelse doesn't work on dataframes in general. You can do it in one long line with a dataframe using lapply, but it is ugly:

df <- as.data.frame( lapply(BWS6, function(col) ifelse(col < -998, NA, col)))

Duncan Murdoch

______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to