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
______________________________________________
[email protected] 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.