On 2012-11-23 18:55, Muhuri, Pradip (SAMHSA/CBHSQ) wrote:
Hello, I have two very basic questions (console attached): 1) What am I getting an error message for # 5 and # 7 ? 2) How to fix the code? I would appreciate receiving your help. Thanks, Pradip Muhuri ###### Reproducible Example ##### N <- 100 set.seed(13) df<-data.frame(matrix(sample(c(1:10),N, replace=TRUE),ncol=5)) keep_var <- c("X1", "X2") drop_var <- c("X3", "X4", "X5") df[df$X1>=8,] [,1:2] #1 df[df$X1>=8,] [,-c(3,4,5)] #2 df[df$X1>=8,] [,c(-3,-4,-5)] #3 df[df$X1>=8,] [,c("X1", "X2")] #4 df[df$X1>=8,] [,-c("X3", "X4", "X5")] #5 DOES NOT WORK df[df$X1>=8,] [,keep_var] #6 df[df$X1>=8,] [, !drop_var] #7 DOES NOT WORK
To see what's wrong, just print the problematic part: -c("X3", "X4", "X5") You can't negate a character vector; you have to have a numeric vector. And !drop_var doesn't work because you need something that evaluates to a logical value if you want to "!" it. This will do it: df[df$X1>=8,] [, !names(df) %in% drop_var] Or use the subset() function, as Jorge suggests. Peter Ehlers ______________________________________________ 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.