Tôi muốn lấy danh sách tọa độ. Đối với mọi vị trí trong tọa độ, tôi muốn gán 1 cho ma trận. Ma trận cuối cùng sẽ trông như thế này. Tôi muốn sử dụng một phương pháp vectorized nhanh thay vì một vòng lặp for.Chỉ định 1 trong ma trận từ danh sách tọa độ
> sample.matrix
A B C D E F G H I J K L M N O P Q R S T
A 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
B 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0
C 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
D 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0
E 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
F 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0
G 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
H 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0
I 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
J 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0
K 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
L 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
M 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0
N 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
O 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0
P 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0
Q 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0
R 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0
S 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
T 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
mẫu dữ liệu:
set.seed(15)
dat <- data.frame(x=sample(LETTERS[1:20], 15,set.seed(15)),y=sample(LETTERS[1:20], 15,set.seed(15)), stringsAsFactors = FALSE)
sample.matrix <- matrix(data=0, nrow = 20, ncol = 20, dimnames = list(LETTERS[1:20],LETTERS[1:20]))
gì tôi đã cố gắng mà làm việc.
for (n in 1:15){
sample.matrix[dat[n,]$x,dat[n,]$y] =1
}
Điều tôi đã thử không hoạt động.
by(dat, 1:15, function(a.row){sample.matrix[a.row$x, a.row$y]=1})
(upvoted) Các ví dụ có thể được cải thiện bằng cách sử dụng set.seed() để làm cho nó tái sản xuất . –
cảm ơn, đã chỉnh sửa để bao gồm các mục nhập – polka
Nhập các mục 'nrow (dat)' này trong các mục 'length (sample.matrix)' của một ma trận không đầy, dường như cũng thích hợp cho một lưu trữ thưa thớt - 'xtabs (~ factor (x, LETTERS [1:20]) + yếu tố (y, LETTERS [1:20]), dat, thưa thớt = TRUE) ' –