Message-ID: <1343828851.11996.YahooMailNeo@web142605.mail.bf1.yahoo.com>
Date: 2012-08-01T13:47:31Z
From: arun
Subject: Error message: $ operator is invalid for atomic vectors
In-Reply-To: <501931EF.5000605@sapo.pt>
Hi Rui,
Thanks.? It was my fault.? I had both of these saved (read.table (), data.frame(read.table()).? I think I accidentally pasted the second one, and got the error.?
A.K.
----- Original Message -----
From: Rui Barradas <ruipbarradas at sapo.pt>
To: arun <smartpink111 at yahoo.com>
Cc: r-help <r-help at r-project.org>
Sent: Wednesday, August 1, 2012 9:41 AM
Subject: Re: Error message: $ operator is invalid for atomic vectors
Hello,
Because there's a bug in the way I read the data: data.matrix is not
well used here, it transforms all variables in character vectors and may
cause problems such as
> "9" < "10"
[1] FALSE
> "9" > "10"
[1] TRUE
It was David Winsemius that pointed this out.
As a side effect, data.matrix returns a matrix so '$' is invalid.
Use read.table and both codes are equivalent.
Rui Barradas
Em 01-08-2012 14:28, arun escreveu:
> HI,
>
> The code was working perfectly fine yesterday and today, until half an hour ago.? Couldn't find any problems in the code. Still, I am getting error message.
>
> myMatrix <- data.matrix(read.table(text="
> Name? ? ? ? ? ? Age
> ANTONY? ? ? ? 27
> IMRAN? ? ? ? ? 30
> RAJ? ? ? ? ? ? ? ? ? 22
> NAHAS? ? ? ? ? 32
> GEO? ? ? ? ? ? ? ? 42
> ", header=TRUE))
>
> MinMaxArray? <- data.frame(MIN = 25,MAX=35)
> myMatrix[myMatrix$Age<=MinMaxArray$MAX & myMatrix$Age>=MinMaxArray$MIN,]
> #Error in myMatrix$Age : $ operator is invalid for atomic vectors
>
>
> #Then, I tried Rui's code;
>? inx <- MinMaxArray[[ "MIN" ]] <= myMatrix[, "Age"] & myMatrix[, "Age"]<= MinMaxArray[[ "MAX" ]]
>? myMatrix[ inx , ]
>? ? ? Name Age
> [1,]? ? 1? 27
> [2,]? ? 3? 30
> [3,]? ? 4? 32
> #Previously, this was also working fine.
>
> Not sure what is happening.
>
> A.K.