用户定义的函数 ```R``` 无法 运行
User defined function ```R``` fails to run
我想学习如何在 R
中创建函数以根据原始数据模拟数据。我可以访问来自(机密)的玩具数据,但不允许我分享。同时,数据大到无法共享。
- 数据与下面类似,但我大大缩小了尺寸。
epsilon=2
rs=matrix(rnorm(n=10000),nrow=10000, ncol=100)
ival=matrix(rnorm(n=10, mean=50, sd=30), nrow=10, ncol=100)
r1= matrix(c(5.5,5.7, 5, 6, 6.5, 7, 6.8, 7.4,8,10), nrow=10, ncol=1)
r2= matrix(c(6.5,7, 6.5, 8, 10, 13, 13, 15,18,20), nrow=10, ncol=1)
- 根据以上数据,现在我想模拟生成新的数据。因此,我为此创建了以下函数。但是好像运行不太好。非常感谢您的建议和帮助
toyfunction = function(epsilon, rs, ival, r1, r2 ){
toydata=matrix(0, nrow=10000,ncol=100)
r=matrix(0,nrow=10,ncol=100)
r[1:10,]=5
for(i in 1:1000){
for(col in 1:100){
#1-5 rows
for(row in 1:5){
toydata[row+(i-1)*10,col]=ival[row, col]+rs[row+(i-1)*10,col]
}
#6-10 rows
for(row in 6:10){
toydata[row+(i-1)*10,col]=toydata[row-5+(i-1)*10,col] + epsilon*log(r[row-1,1]/r[row-10,1]) + rs[row+(i-1)*10,col]
if(toydata[row+(i-1)*10,col] < 45){
r[row,col]=r1[row,1]
}
else{
r[row,col]=r2[row,1]
}
}
}
}
}
mydata=toyfunction(epsilon,rs, ival,r1, r2)
非常感谢您的帮助和建议。我还假设该函数会给我矩阵输出。这对我来说也很重要,因为稍后我将不得不做一些矩阵代数来进行分析。
我是新来的,所以我不能对你的问题添加任何评论。
你的问题是这个人:
epsilon*log(r[row-1,1]/r[row-10,1])
这是一个向量(尝试:i = 1,行 = 6,列 = 1);所以你在右侧得到一个向量,试图替换矩阵上的零。
我想学习如何在 R
中创建函数以根据原始数据模拟数据。我可以访问来自(机密)的玩具数据,但不允许我分享。同时,数据大到无法共享。
- 数据与下面类似,但我大大缩小了尺寸。
epsilon=2
rs=matrix(rnorm(n=10000),nrow=10000, ncol=100)
ival=matrix(rnorm(n=10, mean=50, sd=30), nrow=10, ncol=100)
r1= matrix(c(5.5,5.7, 5, 6, 6.5, 7, 6.8, 7.4,8,10), nrow=10, ncol=1)
r2= matrix(c(6.5,7, 6.5, 8, 10, 13, 13, 15,18,20), nrow=10, ncol=1)
- 根据以上数据,现在我想模拟生成新的数据。因此,我为此创建了以下函数。但是好像运行不太好。非常感谢您的建议和帮助
toyfunction = function(epsilon, rs, ival, r1, r2 ){
toydata=matrix(0, nrow=10000,ncol=100)
r=matrix(0,nrow=10,ncol=100)
r[1:10,]=5
for(i in 1:1000){
for(col in 1:100){
#1-5 rows
for(row in 1:5){
toydata[row+(i-1)*10,col]=ival[row, col]+rs[row+(i-1)*10,col]
}
#6-10 rows
for(row in 6:10){
toydata[row+(i-1)*10,col]=toydata[row-5+(i-1)*10,col] + epsilon*log(r[row-1,1]/r[row-10,1]) + rs[row+(i-1)*10,col]
if(toydata[row+(i-1)*10,col] < 45){
r[row,col]=r1[row,1]
}
else{
r[row,col]=r2[row,1]
}
}
}
}
}
mydata=toyfunction(epsilon,rs, ival,r1, r2)
非常感谢您的帮助和建议。我还假设该函数会给我矩阵输出。这对我来说也很重要,因为稍后我将不得不做一些矩阵代数来进行分析。
我是新来的,所以我不能对你的问题添加任何评论。
你的问题是这个人:
epsilon*log(r[row-1,1]/r[row-10,1])
这是一个向量(尝试:i = 1,行 = 6,列 = 1);所以你在右侧得到一个向量,试图替换矩阵上的零。