Re: [問題]不使用for改使用apply寫法的可能性
require(magrittr)
data(iris)
set.seed(1)
data <- iris[sample(nrow(iris)) ,] # 打散資料
Xtrain <- data[1:100,1:4]
Xtest <- data[101:150,1:4]
M <- nrow(Xtrain)
N <- nrow(Xtest)
distmatrix <- matrix(0,nrow = M,ncol = N)
for(i in 1:M){
for(j in 1:N){
distmatrix[i,j]<- sum((Xtrain[i,]-Xtest[j,])^2) %>% sqrt()
}
}
最近在implement knn 的 distancematrix
想在厚臉皮的問問看
這種常見的操作要怎麼 轉成非迴圈寫法
我用迴圈寫塞的好慢喔
我自己只想到這樣 就卡住了
(matrix(rep(Xtest[1,],nrow(Xtrain)),ncol=ncol(Xtrain),byrow = T)-Xtrain)^2
%>% apply(X=. ,1,sum)%>%sqrt
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 219.91.75.186 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/R_Language/M.1585193311.A.644.html
→
03/26 11:38,
4年前
, 1F
03/26 11:38, 1F
→
03/26 11:38,
4年前
, 2F
03/26 11:38, 2F
→
03/26 11:38,
4年前
, 3F
03/26 11:38, 3F
推
03/26 13:28,
4年前
, 4F
03/26 13:28, 4F
params <- expand.grid(M=seq(M), N=seq(N))
distmatrix2 <- matrix(mapply(function(i,j)
sqrt(sum((Xtrain[i,]-Xtest[j,])^2)),
params$M, params$N),
nrow = M, ncol = N)
有點看不懂 mapply這段 有人可以解釋一下他是怎麼運作的嗎
# EQUIVALENT TO OP's distance
identical(distmatrix, distmatrix2)
老外的解法
※ 編輯: empireisme (219.91.75.186 臺灣), 03/26/2020 14:34:27
※ 編輯: empireisme (219.91.75.186 臺灣), 03/26/2020 14:46:28
※ 編輯: empireisme (219.91.75.186 臺灣), 03/26/2020 14:58:34
推
03/26 23:10,
4年前
, 5F
03/26 23:10, 5F
→
03/26 23:13,
4年前
, 6F
03/26 23:13, 6F
→
03/27 10:01,
4年前
, 7F
03/27 10:01, 7F
→
03/27 10:01,
4年前
, 8F
03/27 10:01, 8F
→
03/27 10:28,
4年前
, 9F
03/27 10:28, 9F
→
03/27 10:31,
4年前
, 10F
03/27 10:31, 10F
→
03/27 18:40,
4年前
, 11F
03/27 18:40, 11F
→
03/27 18:40,
4年前
, 12F
03/27 18:40, 12F
→
03/27 18:43,
4年前
, 13F
03/27 18:43, 13F
→
03/27 18:43,
4年前
, 14F
03/27 18:43, 14F
→
03/27 18:44,
4年前
, 15F
03/27 18:44, 15F
推
03/28 03:02,
4年前
, 16F
03/28 03:02, 16F
→
03/28 03:02,
4年前
, 17F
03/28 03:02, 17F
→
03/28 03:02,
4年前
, 18F
03/28 03:02, 18F
→
03/28 19:30,
4年前
, 19F
03/28 19:30, 19F
推
03/28 20:56,
4年前
, 20F
03/28 20:56, 20F
→
03/28 20:56,
4年前
, 21F
03/28 20:56, 21F
→
03/28 20:56,
4年前
, 22F
03/28 20:56, 22F
→
03/28 20:56,
4年前
, 23F
03/28 20:56, 23F
→
03/29 00:42,
4年前
, 24F
03/29 00:42, 24F
→
03/29 00:42,
4年前
, 25F
03/29 00:42, 25F
→
03/29 01:22,
4年前
, 26F
03/29 01:22, 26F
→
03/29 01:22,
4年前
, 27F
03/29 01:22, 27F
推
03/29 01:27,
4年前
, 28F
03/29 01:27, 28F
→
03/29 01:27,
4年前
, 29F
03/29 01:27, 29F
→
03/30 13:57,
4年前
, 30F
03/30 13:57, 30F
→
03/30 14:55,
4年前
, 31F
03/30 14:55, 31F
→
03/30 14:55,
4年前
, 32F
03/30 14:55, 32F
→
03/30 16:51,
4年前
, 33F
03/30 16:51, 33F
→
03/30 16:51,
4年前
, 34F
03/30 16:51, 34F
→
03/30 20:53,
4年前
, 35F
03/30 20:53, 35F
討論串 (同標題文章)
完整討論串 (本文為第 4 之 4 篇):
R_Language 近期熱門文章
PTT數位生活區 即時熱門文章