On 2012-07-15 08:41, Paulo Barata wrote:

Dr. Dalgaard,

Thank you. But pre-checking with is.null() or using with()
doesn't solve the problem of catching spelling mistakes
in the name of a variable inside a data frame, when using
the df$var notation often in a program.

Is there some way for R to behave, in relation to a variable
inside a data frame, the same way it behaves for a variable
not in a data frame? For example:

##----------------------------------------
a <- c(1,2,3)

## the variable exists, we get a correct answer
a==1

## the variable does not exist, R rightly points this out
aaa==1
##----------------------------------------

My point is, if we make a spelling mistake in a program when referring
to a variable inside a data frame, using the df$var notation,
there seems to be no way of getting warned about that.

You could wean yourself from the $-habit. It's convenient but can
lead to the problems you're experiencing (and this has been
discussed before). For programming, if you're prone to make
spelling errors, you should prefer df[, "aaa"]. See ?Extract.

Peter Ehlers


Thank you once again.

Paulo Barata

---------------------------------------------------------------------


---------- Original Message -----------
From: peter dalgaard <pda...@gmail.com>
To: "Paulo Barata" <paulo.bar...@ensp.fiocruz.br>
Sent: Sun, 15 Jul 2012 16:47:35 +0200
Subject: Re: [R] variable (column) in a data frame

On Jul 15, 2012, at 16:30 , Paulo Barata wrote:


To the R help list,

When using a data frame, there is no warning or error message
when I refer to a non-existent variable inside the data frame.

Example:

##----------------------------------------------

a <- c(1,2,3)
b <- c(11,22,33)
df <- data.frame(a,b)
df

## correct: there is a column in df named 'a'
## the sum is correctly performed
sum(df$a==2)

## incorrect: there is no column in df named 'aaa',
## but the sum is performed anyway without either warning or error
sum(df$aaa==2)

##----------------------------------------------

Is there some way to make R issue either a warning or an error
message in such a situation?


You can pre-check for is.null(df$aaa) or use with(df, sum(aaa==2)).

--
Peter Dalgaard, Professor,
Center for Statistics, Copenhagen Business School
Solbjerg Plads 3, 2000 Frederiksberg, Denmark
Phone: (+45)38153501
Email: pd....@cbs.dk  Priv: pda...@gmail.com

--
This message has been scanned for viruses and
dangerous content by MailScanner, and is
believed to be clean.
------- End of Original Message -------

______________________________________________
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.


______________________________________________
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