我有一個函式可以給出如圖所示的結果。
List of 3
$ D1: num 0.0509
$ D2: num 0.0536
$ D : num 0.0523
我想訪問串列的第一個元素,并將所有值放在一個向量中。它以以下方式回圈資料。Vector1 和 Vector2 有大約 100 個資料。
資料樣本
vector1=c(1213, 57683, 74466, 44419, 17481, 3403, 42252, 7045,29445, 15004, 21337, 1892, 21861, 238, 26574, 17579)
vector2=c(3185, 29692, 12570, 26081, 4992, 1659, 16592, 1748, 37583, 6751, 10188, 355, 8116, 9, 5064, 1846)
它以以下方式回圈資料。
w<-2
ab <- c()
for (i in w:length(vector1)){
pred[[count]] <- vector1[(i-w 1):i]
obs[[count]] <- vector2[(i-w 1):i]
a1 <- pred[count]
a2<- obs[count]
count = count 1
klvalue(unlist(a1),unlist(a2))
a1 <- list()
a2<- list()
kldta<-append(klvalue,ab)
}
功能如圖
klvalue<- function(a,b){kl.dist(a, b, base = exp(1))
} #kl.dist is from library(seewave)
我知道我可以通過 do 訪問最后的資料, klvalue[[1]]但我不確定如何回圈訪問。
uj5u.com熱心網友回復:
我可能誤解了,但這是你想要的結果嗎?
#install.packages("seewave")
library(seewave)
klvalue<- function(a,b){kl.dist(a, b, base = exp(1))
} #kl.dist is from library(seewave)
vector1=c(1213, 57683, 74466, 44419, 17481, 3403, 42252, 7045,29445, 15004, 21337, 1892, 21861, 238, 26574, 17579)
vector2=c(3185, 29692, 12570, 26081, 4992, 1659, 16592, 1748, 37583, 6751, 10188, 355, 8116, 9, 5064, 1846)
w<-2
ab <- list()
pred <- list()
obs <- list()
count <- 1
kldta <- list()
for (i in w:length(vector1)){
pred[[count]] <- vector1[(i-w 1):i]
obs[[count]] <- vector2[(i-w 1):i]
a1 <- pred[count]
a2 <- obs[count]
count <- count 1
klval <- klvalue(unlist(a1),unlist(a2))
kldta[i] <- klval[[1]]
}
kldta_final <- unlist(kldta)
kldta_final
#> [1] 0.0475256543 0.1523148191 0.1896899344 0.0468433690 0.0219116189
#> [6] 0.0017162112 0.0115640592 0.1471657288 0.1053351614 0.0004260342
#> [11] 0.0253701967 0.0141622162 0.0148801420 0.0072153100 0.0403388718
由reprex 包于 2022-05-31 創建(v2.0.1)
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/483716.html
上一篇:PYTHON列印隨機電話號碼
