[R] row.names - problem with vers. 1.4.1

Tony Plate
Fri, 23 Aug 2002 15:48:37 -0000

This should work:

prices.raw<-read.table(paste(path,"prices",date,".txt",sep=""),row.names=NULL,header=T)
prices <- as.matrix(prices.raw[,-1])
dimnames(prices)[[1]] <- as.chararacter(prices.raw[,1])

Your problem comes because you are telling R to use the first column of the
table as row names, but as R is replying to you, it doesn't like that
because they're not unique.  So the simple solution is to let R generate
it's own row names and treat the row names in the file as the first column
of data.  Then convert the rest of the data frame to a matrix, and finally,
use the first column of the data frame as the row names of the
matrix.  (Matrices can have non-unique dimnames).

Are you sure you can use read.table in R1.5.1 to read a file with duplicate
row names?  I can't:

 >
sink("clipboard");print(matrix(1:6,ncol=2,dimnames=list(c("A","B","A"),c("x","y"))));
sink()
 > readLines("clipboard")
[1] "  x y" "A 1 4" "B 2 5" "A 3 6"
 > prices.raw <- read.table("clipboard", row.names=1)
Error in "row.names<-.data.frame"(*tmp*, value = row.names) :
         duplicate row.names are not allowed
 > prices.raw <- read.table("clipboard", row.names=NULL)
 > prices.raw
   row.names x y
1         A 1 4
2         B 2 5
3         A 3 6
 > prices <- as.matrix(prices.raw[,-1])
 > dimnames(prices)[[1]] <- as.character(prices.raw[,1])
 > prices
   x y
A 1 4
B 2 5
A 3 6
 > version
          _
platform i386-pc-mingw32
arch     i386
os       mingw32
system   i386, mingw32
status
major    1
minor    5.1
year     2002
month    06
day      17
language R

hope this helps,

-- Tony Plate

At 09:07 AM 8/23/2002 +0200, Herr.Alfred at gmx.net
wrote:
>Hi,
>
>need a little help:
>
>I want to handle a file with a first column like this:
>...
>27.10.98
>28.10.98
>29.10.98
>...
>
>In vers. 1.5.1 I can use a statement like:
>
># load daily
>prices
>prices<-as.matrix(read.table(paste(path,"prices",date,".txt",sep=""),row.names=1,header=T))
>
>
>In ves. 1.4.1 R generates an ERROR:
>Error in "row.names<-.data.frame"(*tmp*, value = row.names) :
>         duplicate row.names are not allowed
>
>For a reason too complex to explain I HAVE TO use 1.4.1! Can anyone tell me
>how to solve this problem in 1.4.1?
>
>TIA,
>Alfred.
>
>--
>
>
>
>-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
>r-help mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
>Send "info", "help", or "[un]subscribe"
>(in the "body", not the subject !)  To: r-help-request at
stat.math.ethz.ch
>_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._
>