On Oct 5, 2009, at 4:47 PM, Jill Hollenbach wrote:
Let me clarify:
I'm using this--
dfnew<- sapply(df, function(df) lookuptable[match(df, lookuptable [ ,
1]),
2])
It seems a very bad idea to use the same name in your functions as
that of the dataframe argument you might be passing. You end up with
two different objects (in different environments) both with the name
"df". The R interpreter of course can handle keeping those two objects
separate, but my concern is for the poor "wetware" interpreters
including you out here in R-help-land.
lookup
0101 01:01
0201 02:01
0301 03:01
0401 04:01
These are not cut-and-pastable. (And I cannot figure out what data
type you expect them to be. They are not displayed in a form that I
would expect to see at the console from either a matrix or a
dataframe. Use the dput function to show an ASCII interpretable form
that can be unambiguously assigned to a variable.
lookup <- read.table(textConnection("
0101 01:01
0201 02:01
0301 03:01
0401 04:01") )
> lookup #as a dataframe would be displayed
V1 V2
1 101 01:01
2 201 02:01
3 301 03:01
4 401 04:01
> str(lookup)
'data.frame': 4 obs. of 2 variables:
$ V1: int 101 201 301 401
(Impossible to tell if you have your first column as an integer or
character (or even whether you are thinking of them a columns at all
given how you later indicate you want your output.)
$ V2: Factor w/ 4 levels "01:01","02:01",..: 1 2 3 4
> dput(lookup)
structure(list(V1 = c(101L, 201L, 301L, 401L), V2 =
structure(1:4, .Label = c("01:01",
"02:01", "03:01", "04:01"), class = "factor")), .Names = c("V1",
"V2"), class = "data.frame", row.names = c(NA, -4L))
Easy and completely unambiguous to type "lookup <-" and then paste in
the output of dput.
df
0101 0301
0201 0401
0101 0502
dfnew
01:01 03:01
02:01 04:01
01:01 NA
but what I want is:
dfnew2
01:01 03:01
02:01 04:01
01:01 0502
thanks again,
Jill
Jill Hollenbach wrote:
Hi all,
I think this is a very basic question, but I'm new to this so
please bear
with me.
I'm using match to translate elements of a data frame using a lookup
table. If the content of a particular cell is not found in the lookup
table, the function returns NA. I'm wondering how I can just ignore
those
cells, and return the original contents if no match is found in the
lookup
table.
Many thanks in advance, this site has been extremely helpful for me
so
far,
Jill
Jill Hollenbach, PhD, MPH
Assistant Staff Scientist
Center for Genetics
Children's Hospital Oakland Research Institute
jhollenb...@chori.org
--
View this message in context:
http://www.nabble.com/how-to-have-%27match%27-ignore-no-matches-tp25756601p25757009.html
Sent from the R help mailing list archive at Nabble.com.
______________________________________________
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.
David Winsemius, MD
Heritage Laboratories
West Hartford, CT
______________________________________________
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.