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.
Rui Barradas
2012-Aug-01 13:41 UTC
[R] 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.