Skip to content

Cannot rescale a constant/zero column error.

4 messages · Jim Lemon, Jason Fill, PIKAL Petr

#
On 10/31/2012 11:47 PM, fillay89 wrote:
Hi fillay89,
You seem to be trying to run a principal component analysis on two 
numbers, which won't produce anything useful. If I make up some data 
that is more realistic:

pcmatrix<-data.frame(Q1=sample(1:5,10,TRUE),Q2=sample(1:5,10,TRUE))
pcmatrix[,1] <- pcmatrix[,1] + 96
pcmatrix[,2] <- pcmatrix[,2] + 96
x.pca <- prcomp(pcmatrix,retx=TRUE,center=TRUE,scale=TRUE,cor=TRUE)
x.pca
Standard deviations:
[1] 1.263267 0.635733

Rotation:
          PC1        PC2
Q1 0.7071068 -0.7071068
Q2 0.7071068  0.7071068

it runs and I get a slightly more useful result. Running your code does 
bomb in exactly the way you describe, as does:

x.pca <- prcomp(data.frame(Q1=99,Q2=98), retx=TRUE, center=TRUE, 
scale=TRUE, cor=TRUE)
Error in prcomp.default(data.frame(Q1 = 99, Q2 = 98), retx = TRUE, 
center = TRUE,  :
   cannot rescale a constant/zero column to unit variance

Your problem is that you have a data frame with only one value (i.e. a 
constant) in each column.

Jim
1 day later
#
Jim,

Thank you for your reply.  I guess I am just not understanding what the difference is.  If I run your example using the pcmatrix<-data.frame(Q1=sample(1:5,10,TRUE),Q2=sample(1:5,10,TRUE)) and print out pcmatrix I get:

	Q1	Q2
1	98	99

Then if I mirror my input file to be, would would be what the samples from above would have created, it would look like this:

ID,Q1,Q2
1,2,3

And I run the script printing out pcmatrix I get the exact same thing.

	Q1	Q2
1	98	99

So I would think they are basically the same representations, however one works when passed into the prcomp function and the other does not.  I am just trying to tweak a script that we had created for us (cannot find the guy now) so I can pass more columns of data.  I clearly really do not know what I am doing, but again thanks for you time and any direction you can point me in would be awesome.

Thanks

Jason
On Nov 1, 2012, at 3:57 AM, Jim Lemon wrote:

            
#
Hi
Thats rather surprising. I get
Q1 Q2
1   4  4
2   3  3
3   4  1
4   4  4
5   4  2
6....

this what I get
what about include 

dput(head(yourfile)) 
to your post to let us see how it looks like. Or at least 

str(yourfile)

Regards
Petr
#
Petr,

Thank you for your reply, I actually figured out the issue this morning, I needed to add more data to my data file and it resolved it.

Thanks again for everyones time!

Jason
On Nov 2, 2012, at 9:00 AM, PIKAL Petr wrote: