[R] faster way to use filter this

David Winsemius dwinsemius at comcast.net
Sat Apr 16 07:08:49 CEST 2016


> On Apr 15, 2016, at 5:58 PM, Paul Tremblay <paulhtremblay at gmail.com> wrote:
> 
> I have the following (simplified) vectors:
> index <- c("shoe"  "shirt" "fruit")
> cost <- c(100, 50, 2)
> data <- c("shirt", "shoe", "vegetable")
> 
> I want my outcome to be:
> 
> (50, 100, 0)
> 
> (shirt => 50, shoe => 100, vegetable => not found, so 0)

 c(cost,0)[ match(index, data, nomatch = length(index)+1) ]
#[1]  50 100   0


> 
> I have written the following function:
> 
> 
> for (i in custom_list) {
> + this_cost <- cost[index == i]
> 
> + message(this_cost)
> + }
> 
> 
> This gives me (50, 100)
> 
> I haven't figured out how to use the ifelse. But more importantly, I think
> there should be an easier, and faster way to do this with vectors?
> 
> Thanks!
> 
> Paul
> 
> 	[[alternative HTML version deleted]]
> 
> ______________________________________________
> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see
> 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.

David Winsemius
Alameda, CA, USA



More information about the R-help mailing list