99999久久久久久亚洲,欧美人与禽猛交狂配,高清日韩av在线影院,一个人在线高清免费观看,啦啦啦在线视频免费观看www

熱線電話:13121318867

登錄
2019-03-15 閱讀量: 1687
函數(shù)在增加數(shù)據(jù)大小時產(chǎn)生NA

我在R中實現(xiàn)我的功能并嘗試結果以確定它是否是我期望的。我想要評估的功能是:

在此輸入圖像描述

該功能正常工作,直到我增加數(shù)據(jù)矩陣的大?。ɡ?,它適用于N = 10但不是N = 12時,下面會發(fā)布一個示例。)

我確定是否與我的實現(xiàn)或溢出問題有關。

# Generate Sample Data
gen.sample <-
function(n){
x <- runif(n,min =
-5,max = 5)
y <- ifelse(x <
0,-1,1)
return(data.frame(x,y))
}

# Objective function L_D
obj_fun <-
function(X,y,alpha){
N <- length(X)
inner.product <- numeric(N)
for(i in 1:N){
for(k in 1:N){
inner.product[k] <- alpha[i]*alpha[k]*
y[i]*y[k]*(t(as.numeric(X[i]))%*%as.numeric(X[k]))
}
}
L_D <- sum(alpha) -
0.5*sum(inner.product)
return(L_D)
}

# L_D works when N = 10
set.seed(
4997)
options(digits =
4,scipen = -4)
N =
10
sample.data <- gen.sample(n=N)
X.data <- sample.data$x
y.vec <- sample.data$y

alpha.vector <- matrix(rep(c(
-5,-4,-3,-2,-1,0,1,2,3,4,5),11*N),ncol = 11, nrow = N, byrow = TRUE)
for(j in 1:N){
alpha.vector[j,
2] <- rnorm(1,5,5)
}

for(i in 1:N){
print(obj_fun(X = X.data, y = y.vec, alpha = alpha.vector[i,]))
}

# It produces all NA when N = 12

set.seed(
4997)
options(digits =
4,scipen = -4)
N =
12
sample.data <- gen.sample(n=N)
X.data <- sample.data$x
y.vec <- sample.data$y

alpha.vector <- matrix(rep(c(
-5,-4,-3,-2,-1,0,1,2,3,4,5),11*N),ncol = 11, nrow = N, byrow = TRUE)
for(j in 1:N){
alpha.vector[j,
2] <- rnorm(1,5,5)
}

for(i in 1:N){
print(obj_fun(X = X.data, y = y.vec, alpha = alpha.vector[i,]))
}
[
1] NA
[
1] NA
[
1] NA
[
1] NA
[
1] NA
[
1] NA
[
1] NA
[
1] NA
[
1] NA
[
1] NA
[
1] NA
[
1] NA

出了什么問題?我沒有看到這個問題。

解決辦法:問題出現(xiàn)在這個循環(huán)中obj_fun并且涉及到您正在使用的內(nèi)容alpha:

for(i in 1:N){

for(k in 1:N){

inner.product[k] <- alpha[i]*alpha[k]*...

}

}

兩件事情:

(1)你設置,N=12但你調(diào)用obj_fun(..., alpha=alpha.vector[i,]),其中alpha.vector[i,]是長度為11的向量。我粘貼的循環(huán)嘗試訪問alpha[i]時i=N,這NA是因為沒有第12個元素alpha

(2)注意當你逐步執(zhí)行雙循環(huán)時會發(fā)生什么:當i=1和k=1,你為一個值賦值inner.product[1]。然后i=1和k=2你分配一個值inner.product[2]。這是好的,直到i變化為止i=2。當i=2和時k=1,inner.product[1]通過為其指定新值來覆蓋。這一直持續(xù)到i=N和k=N,此時您覆蓋inner.product[k]所有k,但這次NA是因為你執(zhí)行涉及計算alpha[i]和alpha[k]其中,在上述(1),都是的“外部”剛才解釋alpha。因此,所有的inner.product都充滿了NA。

0.1254
2
關注作者
收藏
評論(0)

發(fā)表評論

暫無數(shù)據(jù)
推薦帖子