问题描述
我正在尝试编写一个函数circle_MC,该函数将半径的长度和模拟次数(N)作为输入,并返回由圆包围的区域。
为此,我创建了一个数值向量并将其更改为“ 1”(如果该点位于圆内),即ifelse语句成立。 到目前为止,我的代码:
circle_MC <- function(r,N)
{
inside <- numeric(N),#only zeroes
x_sim[i] <- runif(N,min = -r,max = r),y_sim[i] <- runif(N,inside <- ifelse(x_sim^2[i] + y_sim^2[i] <= r,1,0),area <- (sum(inside)/length(inside)*4)
return(area)
}
我对R很陌生,很想知道我的错误在哪里。
解决方法
问题是每次分配末尾的,
。在这里,每个分配都是一个单独的语句。目前尚不清楚i
的来源,因为参数只有'r'和'N'
circle_MC <- function(r,N)
{
inside <- numeric(N) #only zeroes removed,x_sim <- runif(N,min = -r,max = r) # removed,y_sim <- runif(N,max = r) # removed,inside <- ifelse(x_sim^2 + y_sim^2 <= r,1,0) # removed,area <- (sum(inside)/length(inside)*4)
return(area)
}
,
您可以避免>>> from pyformatting import optional_format
>>> opening_line = '{greetings} {name} !!!'
>>> optional_format(opening_line,greetings='hii')
'hii {name} !!!'
,因为它不是循环(由于@duckmayr而更新):
i
输出:
#Function
circle_MC <- function(r,N)
{
inside <- numeric(N)#only zeroes
x_sim <- runif(N,max = r)
y_sim <- runif(N,max = r)
inside <- ifelse(x_sim^2 + y_sim^2 <= r^2,0)
area <- ((sum(inside)/length(inside))*((2*r)^2))
return(area)
}