我正在尝试编写一个函数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, min = -r, max = r),
inside <- ifelse(x_sim^2[i] + y_sim^2[i] <= r, 1, 0),
area <- (sum(inside)/length(inside)*4)
return(area)
}
但是,它给我错误消息“错误:“}中的意外错误}}。
我对R很陌生,很想知道我的错误在哪里。
答案 0 :(得分:1)
问题是每次分配末尾的,
。在这里,每个分配都是一个单独的语句。目前尚不清楚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, min = -r, max = r) # removed ,
inside <- ifelse(x_sim^2 + y_sim^2 <= r, 1, 0) # removed ,
area <- (sum(inside)/length(inside)*4)
return(area)
}
答案 1 :(得分:1)
您可以避免>>> 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, min = -r, max = r)
y_sim <- runif(N, min = -r, max = r)
inside <- ifelse(x_sim^2 + y_sim^2 <= r^2, 1, 0)
area <- ((sum(inside)/length(inside))*((2*r)^2))
return(area)
}