寫一個函數required.replicates
需要兩個參數,delta
和sigma
並且具有兩個可選參數,z.alpha = 1.959964
和z.beta=0.8416212
.WRITE此功能與3個元素返回一個列表。第一個元素將是一個包含用於計算r.exact
和r.integer
的四個參數的列表。你可以選擇你自己的名字,但這個元素應該可以通過result[[1]]
之類的東西訪問 - 請參閱單元測試。其他兩個元素的值分別爲r.exact
和r.integer
,對應於小數點和次最大整數值。 sigma = c(4,8)delta = c(5,10)。收件中的R的碼,使用公式需要複製
我的代碼:
z.alpha = 1.959964
z.beta = 0.8416212
sigma=c(4,8)
delta=c(5,10)
required.replicates <- function(z.alpha =1.959964,z.beta =0.8416212, sigma,
delta)
{
result <- list(z.alpha, z.beta, sigma, delta)
print(r.exact<-(2*(z.alpha+z.beta)^2*(sigma)^2/(delta)^2))
print(r.integer<- ceiling(r.exact))
return(x <-list(result, r.exact,r.integer))
}
單元測試給測試
if(length(find("required.replicates"))>0) {
print(total.points <- total.points + 2)
r.4.5.result <- required.replicates(delta=5,sigma=4)
r.4.5.pars <- r.4.5.result[[1]]
if(length(r.4.5.pars)==4) {
print(total.points <- total.points + 2)
if(r.4.5.pars$delta==5) {
print(total.points <- total.points + 1)
} else {
print("Not returning delta parameter")
}
if(r.4.5.pars$z.alpha==1.959964) {
print(total.points <- total.points + 1)
} else {
print("Not returning z.alpha parameter")
}
} else {
print("Not returning all parameters")
}
if(r.4.5.result$r.integer==11) {
print(total.points <- total.points + 2)
} else {
print("Incorrect reps for sigma=4 and delta=5")
}
} else {
print("required.replicates not defined")
}
它給我的錯誤:錯誤如果(r.4.5.pars $三角洲== 5){:參數長度爲零
請幫忙!在此先感謝
嘗試命名您的'結果'列表的元素,以確保測試代碼可以找到我猜的參數? – Marius
我已經通過命名列表(結果)解決了該錯誤,但現在我有新的錯誤錯誤在if(r.4.5.result $ r.integer == 11){:參數的長度爲零新代碼required.replicates <函數(z.alpha = 1.959964,z.beta = 0.8416212,西格瑪,三角洲) { F1 <-z.alpha F2 <-z.beta F3 <-sigma F4 <-delta list1的<-list( z.alpha = f1,z.beta = f2,sigma = f3,delta = f4) list1 result < - list1 print(r.exact < - (2 *(z.alpha +z.β)^ 2 * (r.integer < - ceiling(r.exact)) return(x <-list(result,r.exact,r.integer)) } – Jals
我有兩個名單(結果和X),它解決了錯誤河謝謝 !! – Jals