2014-12-02 250 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