2014-12-02 247 views
2

此代碼邊距:添加不工作

x=c(10,20,30,40,50) 
y=c(17,30,37,50,56) 
my.tbl=cbind(x,y,x-mean(x),y-mean(y),(x-mean(x))*(y-mean(y)), 
      (x-mean(x))^2,(y-mean(y))^2) 
colnames(my.tbl)=c("x","y","x-xbar","y-ybar", 
       "(x-xbar)(y-ybar)","(x-xbar)^2","(y-ybar)^2") 
my.tbl 
addmargins(my.tbl) 

給出了這樣的錯誤:

錯誤陣列(值,暗淡= newdim,dimnames = newdimnames): 長度 'dimnames'[1]不等於數組範圍

無法弄清楚我做錯了什麼。

基於R版本3.1.1(2014年7月10日),RStudio版0.98.1091

+0

是否jazzurro的建議解決問題了嗎? – DatamineR 2014-12-02 06:28:08

回答

3

據至R幫助「表或陣列。該函數使用存在‘模糊’和」 dimnames 「A的屬性」。鑑於RStudent和我都發現你需要暗號。如您所見,my.tbl沒有rownames。你想添加下面的rownames。那麼,你將會得到正確的結果。

dimnames(my.tbl)[[1]] <- c("A", "B", "C", "D", "E") 
addmargins(my.tbl) 

class(my.tbl) 
#[1] "matrix" 

str(my.tbl) 
#num [1:5, 1:7] 10 20 30 40 50 17 30 37 50 56 ... 
#- attr(*, "dimnames")=List of 2 
#..$ : NULL 
#..$ : chr [1:7] "x" "y" "x-xbar" "y-ybar" ... 

或者,您可能可以執行以下操作來分配rownames。至少,這是在我的MAC上工作。通過轉換爲表格,你會得到rownames。

my.tbl2 <- as.table(my.tbl) 

#class(my.tbl2) 
#[1] "table" 

#str(my.tbl2) 
#table [1:5, 1:7] 10 20 30 40 50 17 30 37 50 56 ... 
#- attr(*, "dimnames")=List of 2 
#..$ : chr [1:5] "A" "B" "C" "D" ... 
#..$ : chr [1:7] "x" "y" "x-xbar" "y-ybar" ... 

addmargins(my.tbl2) 

#  x y x-xbar y-ybar (x-xbar)(y-ybar) (x-xbar)^2 (y-ybar)^2 Sum 
#A  10 17 -20 -21    420  400  441 1247 
#B  20 30 -10  -8    80  100   64 276 
#C  30 37  0  -1    0   0   1 67 
#D  40 50  10  12    120  100  144 476 
#E  50 56  20  18    360  400  324 1228 
#Sum 150 190  0  0    980  1000  974 3294 
+0

我也試過這個,但沒有爲我工作。矩陣也是我看到的@RStudent的數組 – DatamineR 2014-12-02 06:06:30

+0

。我想知道我們之間的區別是什麼。讓我再考慮一下 – jazzurro 2014-12-02 06:08:21

+0

@RStudent我重新啓動R去除一切。代碼對我來說仍然很好。我用'my.tbl'玩過。我添加了這樣的dimname:'dimnames(my.tbl)[[1]] < - c(「A」,「B」,「C」,「D」,「E」)''。然後,我嘗試了'addmargins(my.tbl)'。這對你有用嗎? – jazzurro 2014-12-02 06:33:09

2

我解決了這個與rownames(my.tbl) <- 1:dim(my.tbl)[1]

> rownames(my.tbl) <- 1:dim(my.tbl)[1] 
> addmargins(my.tbl) 
     x y x-xbar y-ybar (x-xbar)(y-ybar) (x-xbar)^2 (y-ybar)^2 Sum 
1 10 17 -20 -21    420  400  441 1247 
2 20 30 -10  -8    80  100   64 276 
3 30 37  0  -1    0   0   1 67 
4 40 50  10  12    120  100  144 476 
5 50 56  20  18    360  400  324 1228 
Sum 150 190  0  0    980  1000  974 3294 
+0

我剛剛發佈了一條消息給你。我使用了'dimnames'並添加了rownames。 – jazzurro 2014-12-02 06:34:24

+0

很高興看到你也發現了原因。對於大量的調查,請+1。 – jazzurro 2014-12-02 06:43:32

+0

謝謝! ;-) – DatamineR 2014-12-02 06:52:29