Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
456 views
in Technique[技术] by (71.8m points)

r - Adding a new column to matrix error

I'm trying to add a new column to existing matrix, but getting warning everytime.

I'm trying this code:

normDisMatrix$newColumn <- labels

Getting this message:

Warning message: In normDisMatrix$newColumn <- labels : Coercing LHS to a list

After it, when I check the matrix, it seems null:

dim(normDisMatrix)
NULL

Note: labels are just vectors which have numbers between 1 and 4.

What can be the problem?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

As @thelatemail pointed out, the $ operator cannot be used to subset a matrix. This is because a matrix is just a single vector with a dimension attribute. When you used $ to try to add a new column, R converted your matrix to the lowest structure where $ can be used on the vector, which is a list.

The function you want is cbind() (column bind). Suppose I have the matrix m

(m <- matrix(51:70, 4))
#      [,1] [,2] [,3] [,4] [,5]
# [1,]   51   55   59   63   67
# [2,]   52   56   60   64   68
# [3,]   53   57   61   65   69
# [4,]   54   58   62   66   70

To add the a new column from a vector called labels, we can do

labels <- 1:4
cbind(m, newColumn = labels)
#                     newColumn
# [1,] 51 55 59 63 67         1
# [2,] 52 56 60 64 68         2
# [3,] 53 57 61 65 69         3
# [4,] 54 58 62 66 70         4

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...