[问题]不使用for改使用apply写法的可能性

楼主: empireisme (empireisme)   2020-03-25 03:07:53
如题
最近想手刻实践 cross validtion的算法
上网查了一下别人的范例code
如下
x <- runif(100)*10 #Random values between 0 and 10
y <- x+rnorm(100)*.1 #y~x+error
dataset <- data.frame(x,y) #Create data frame
dataset<- dataset[sample(nrow(dataset)),]
dataset
#here is the trick
folds <- cut(seq(1,nrow(dataset)),breaks=5,labels=FALSE)
folds
sample(nrow(dataset))
for(i in 1:5){
#Segement your data by fold using the which() function
#这里就是我想问的
testIndexes <- which(folds==i,arr.ind=TRUE)
#这里就是我想问的
testData <- dataset[testIndexes, ]
trainData <- dataset[-testIndexes, ]
#Use the test and train data partitions however you desire...
#必须要在这个步骤去套入model 然后计算MSE
}
他在切traing 和Testing时 使用了 fold的技巧
但是这整段有没有可能 不使用for 循环 而改用apply家族去实现
因为真的太喜欢使用apply的简洁了
还希望版友回答
偷偷问另外一个问题
我有一个function s 去计算 x*y
s<- function(x,y){ x*y }
s( c(2,3) , c(4,5) )
这里我会得到 8 15
但其实我想得到的是所有的可能性
8,10,12,15
请问我要如何在保有 input是 c(2,3) , c(4,5) 下 得到我要的结果呢
更甚至在 s ( c(2,3),c(4,5,6,7,8) ) 状况下也可以得到遍历的结果
作者: andrew43 (讨厌有好心推文后删文者)   2020-03-25 07:39:00
最后的问题用outer
作者: locka (locka)   2020-03-25 07:55:00
推outer没想到还有这招
楼主: empireisme (empireisme)   2020-03-25 13:25:00
ty
作者: jezi1878 (小天使)   2020-03-26 10:10:00
第二个问题很简单吧,用两个for循环就可以达成https://i.imgur.com/9Nno130.png
楼主: empireisme (empireisme)   2020-03-26 11:13:00
第二个例子用for真的很简单呢!
作者: locka (locka)   2020-03-26 11:22:00
outer( c(2:3), c(4:8) ) 原生好东西,不用吗XD

Links booklink

Contact Us: admin [ a t ] ucptt.com