【问题标题】:foreach on a list of vectors in R在 R 中的向量列表上进行 foreach
【发布时间】:2012-11-26 11:43:26
【问题描述】:

我有一个这样的列表

list1<- list(c(12,45,12,0,0),c(12,45,12,0,1),c(14,45,12,0,2),c(12,15,12,0,3),c(12,45,17,0,4))

我想通过在 R 中使用 foreach 来遍历这个列表。这里的目标是将像 c(1,1,2,0,6) 这样的随机向量与列表中的这些向量进行比较。通过“比较”,我的意思是我需要计算这些向量之间的欧式距离,并找到最接近我的随机向量的那个。

【问题讨论】:

  • 你试过什么?为什么要使用foreach 而不是lapply 及其亲属?

标签: r foreach


【解决方案1】:

使用dist 函数可以实现计算距离的最有效方法。

# a random vector
rvec  <- c(1,1,2,0,6)

# a list of coordinates
list1 <- list(c(12,45,12,0,0),
              c(12,45,12,0,1),
              c(14,45,12,0,2),
              c(12,15,12,0,3),
              c(12,45,17,0,4))

# calculate distances between the random vector and the list elements:
dist(rbind(rvec, t(matrix(unlist(list1), length(list1)))))[seq_along(list1)]

[1] 46.82948 46.71188 47.12749 20.63977 47.81213

【讨论】:

  • 短于t(matrix...:do.call(rbind, list1)
猜你喜欢
  • 1970-01-01
  • 2015-03-31
  • 1970-01-01
  • 2023-03-19
  • 1970-01-01
  • 2019-11-16
  • 1970-01-01
  • 2015-03-07
  • 2017-12-07
相关资源
最近更新 更多