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

Tony Plate tplate at blackmesacapital.com
Fri Aug 23 17:48:37 CEST 2002


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

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



More information about the R-help mailing list