R在使用循环时访问列表的第一个元素并将其附加到向量中

pkha

我有一个函数可以给出如图所示的结果。

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]]但我不确定如何循环访问。

jared_mamrot

我可能误解了,但这是你想要的结果吗?

#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)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何通过循环将矩阵的第一个元素附加到列表中?

索引列表列表的第一个元素并将其添加到新列表

如果第一个列表中的特定条件语句为真,如何使用字符串元素迭代列表并将特定值附加到另一个列表?

将字符串附加到列表中的第一个元素

如何在 R 中列表的每个向量(不同长度)中附加第一个和最后一个元素,而不会使代码变慢?

删除向量的第一个元素并将其大小减少 1

使用 pd.apply() 将列中的每个元素转换为列表,抓取第一个元素,并将其转换为日期时间

如何索引列表的第一个元素,并将其应用于R中数据框的每一行?

RxJava-如何获取列表的第一个元素并将其返回为Observable

如何将文件中每一行的第一个单词放入变量中,将其卷曲并将输出附加到新文件中

R:如何选择列表中一个向量的第一个元素

取一个列表的迭代元素并将其附加到另一个列表

访问多维数组中的第一个索引并将其与数字进行比较

如何将列表的第 i 个元素附加到列表列表中第 i 个列表的第一个条目?

将具有相同第一个元素的向量分组到向量列表中

从集合中获取第一个元素并将其删除

R-使用列表中每个项目的第一个元素过滤列表

R:如何从列表的每个内部元素中删除第一个元素而不将其转换为矩阵?

获取所有列值的第一个元素,并将其添加到第二列,并将结果存储在EXCEL的第三列中

访问第一个元素时出现C ++向量分割错误

在列表中使用 2 个循环后,第一个元素会在 Python 中自动从列表中删除

如果lisp中的字符串是向量,为什么不能使用svref访问第一个元素?

如何将向量分割成相等的长度,并用R将其与父向量的第一个元素相加

如何访问嵌套列表的第一个元素?

当getChildren()返回以Circle作为第一个元素的可观察列表时,如何访问Circle中的值?

是什么原因导致访问非空列表中的第一个元素时出现IndexError?

在向量中查找第一个缺少的元素

单击时,将元素克隆到变量并将其附加到另一个元素

无法访问列表中的第一个元素以外的其他元素