2013-08-09 12 views
5

पंक्तियों (उदा।, rownames() के साथ) के नामों को बदलने में आसान है, लेकिन यह मेरे बाद नहीं है। पर विचार करें:तालिका में पंक्ति चर के नाम को बदलने के लिए

> newTab <- xtabs(~as.factor(letters[1:2])+LETTERS[1:2]) 
> newTab 
         LETTERS[1:2] 
as.factor(letters[1:2]) A B 
         a 1 0 
         b 0 1 

मैं इस प्राप्त करना चाहते हैं:

  upper case 
lower case A B 
     a 1 0 
     b 0 1 

लेकिन अगर मैं कोशिश: उत्पादन में

Error in dimnames(newTab) <- list("lower case", "upper case") :
length of 'dimnames' [1] not equal to array extent

उत्तर

12

देखो:

> dimnames(newTab) <- list("lower case", "upper case") 

मैं कोई त्रुटि मिलती है str(newTab):

> str(newTab) 
xtabs [1:2, 1:2] 1 0 0 1 
- attr(*, "dimnames")=List of 2 
    ..$ as.factor(letters[1:2]): chr [1:2] "a" "b" 
    ..$ LETTERS[1:2]   : chr [1:2] "A" "B" 
- attr(*, "class")= chr [1:2] "xtabs" "table" 
- attr(*, "call")= language xtabs(formula = ~as.factor(letters[1:2]) + LETTERS[1:2]) 

as.factor(letters[1:2]) और LETTERS[1:2]dimnames सूची के नाम हैं। तो आप वास्तव में dimnames सूची के नाम सेट करना चाहते हैं, न कि खुद को dimnames।

> dimnames(newTab) <- setNames(dimnames(newTab),c("lower case", "upper case")) 
> # or 
> names(dimnames(newTab)) <- c("lower case", "upper case") 
> newTab 
      upper case 
lower case A B 
     a 1 0 
     b 0 1 
+3

या 'नाम (dimnames (newtab)) <- सी (" छोटे अक्षर "," अपर केस ")' – Arun

+0

+1, धन्यवाद: आप की तरह कर सकते हैं कि कुछ के माध्यम से! @ अरुण, +1, क्या यह जवाब देना चाहते हैं? यह एक क्लीनर समाधान है। – gung

+0

धन्यवाद @gung। मुझे लगता है कि इसे इस जवाब में संपादित करना बेहतर है। यह अलग नहीं है। – Arun

संबंधित मुद्दे