写循环是我存在的祸根。 我有这个功能,它有效:
rnd.data< -function(X){ min.x< -min(X [2]) max.x< -max(X [2]) min.y< -min(X [1,3]) max.y< -max(X [1,3]) data.table(x = runif(34,min.x,max.x))[,y:= runif(34,min.y,max.y)] }
它的目的是模拟依赖于所讨论的数据帧列的参数内的数据 我写的第一个数据集只有2列,我想模拟样本 但是我有额外的数据帧,列数不同 理想情况下,我会编写一个带有for循环的函数,可以计算我想要输入的所有数据帧的样本,因为我需要为每个数据帧模拟1000多个样本
我累于操纵开头读作: rnd2.data< -function(X){ N'LT; -dim(x)的[2] for(i in 1:n){ if(n> 3){ 但后来又陷入困境
非常感谢任何帮助 谢谢!
答案 0 :(得分:1)
此功能允许您在不循环的情况下执行此操作:
ff<-function(x,r){
apply(x,2,function(z) do.call(runif,as.list(c(r,range(z)))))
}
> set.seed(123)
> x<-cbind(1:10,11:20,51:60)
> ff(x,10)
[,1] [,2] [,3]
[1,] 3.588198 19.61150 59.00585
[2,] 8.094746 15.08001 57.23523
[3,] 4.680792 17.09814 56.76456
[4,] 8.947157 16.15370 59.94843
[5,] 9.464206 11.92632 56.90135
[6,] 1.410008 19.09842 57.37677
[7,] 5.752949 13.21479 55.89659
[8,] 9.031771 11.37854 56.34728
[9,] 5.962915 13.95129 53.60244
[10,] 5.109533 19.59053 52.32402
>
如果您想忽略某些列,只需致电,例如ff(x[,-1],10)
或ff(x[,2:3],10)
等。
如果要将其应用于数据框列表,则可以调用
lapply(listOfData,ff,numberOfSamples)