I have the following data (it is a short example):
a=c(110.3,126.6,101,7,105.6,111,131.4,109.7,99.5,107.3)
b=c(210,47.5,234.5,223.9,213.4,250.1,198.3,180.3,170.9,118.9)
c=c(0.6,0.9,0.4,0.5,0.6,0.8,0.8,0.5,0.4,0.6)
val= cbind(a,b,c)
val=as.data.frame(val)
And I want to generate a sample with a function (a correlation between a and b) So I have the following function:
acc_func <-function(myVal){
newPop = sample(myVal,nrow(myVal), replace=TRUE)
return((cor(newPop$a, newPop$b)^2)/mean(newPop$c))
}
results = matrix(,ncol=1,nrow=0)
for(i in 1:1000){
accNow = acc_func(val)
results = rbind(results,accNow)
}
head(results)
But for some reason that I don´t understand, R returns the following message:
Error in cor(newPop$a, newPop$b) :
supply both 'x' and 'y' or a matrix-like 'x'
Any ideas?
Thank you very much
You can put a size argument inside your acc_func()
to determine the sample size as follows,
acc_func <-function(myVal,size){
newPop = myVal[sample(1:nrow(myVal),size=size,replace=T),]
return((cor(newPop$a, newPop$b)^2)/mean(newPop$c))
}
results = matrix(,ncol=1,nrow=0)
for(i in 1:1000){
accNow = acc_func(val)
results = rbind(results,accNow)
}
head(results)
gives,
[,1]
accNow 0.1008954
accNow 0.2389546
accNow 0.3955409
accNow 0.1851096
accNow 0.1526633
accNow 0.3613495