在R中的列表列表上执行* apply

埃尔鲍尔

我有一个R(featuresList中的向量列表,形式如下:

[[2]]
  [1] 1 0 0 1 1 0 1 1 1 0 1 1 0 1 0 1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 1 1 0 1 1 1 1 1 1 1 1 1 1 0 1 0 1 1 0 0 1 1 1 1 1 1 1 1 1 1 0 1 1 1 0 1 1 1 1 0 1 0 0 1 1 1 0 1 1 1 1 1 1 0 1 0 1 0 0 1 0
 [93] 1 0 0 1 0 1 1 1 1 0 0 0 1 1 0 0 1 0 0 1 1 0 1 0 1 0 1 1 0 0 1 0 0 0 1 1 1 1 0 0 1 1 0 1 1 0 1 1 1 0 0 1 1 1 1 0 0 1 0 1 1 1 0 1 1 0 0 1 1 0 1 1 0 1 1 1 1 0 1 1 1 1 1 1 1 0 1 0 1 0 0 0
[[3]]
  [1] 0.64285714 0.74285714 0.78571429 0.57142857 0.60000000 0.68571429 0.67142857 0.64285714 0.74285714 0.71428571 0.57142857 0.42857143 0.72857143 0.54285714 0.64285714 0.65714286
 [17] 0.57142857 0.70000000 0.47142857 0.64285714 0.47142857 0.70000000 0.57142857 0.62857143 0.57142857 0.78571429 0.61428571 0.57142857 0.50000000 0.57142857 0.74285714 0.62857143

我写这是for为了将一个列表中的每个元素与其他列表中的相应元素相加。在上面的示例中,列表[[2]]具有两个列表,我想将该列表中的每个元素与列表中的元素进行求和[[3]]因此,我将1 in[[2]][1]in中的数字相加[[3]][1],即a 0.64285714,结果为1.64285714

最初以为我想到了这个循环:

features <- 0
  for(i in seq_along(featuresList)){
    if(!(is.null(featuresList[[i]])))
      features<-features+ unlist(featuresList[[i]])
  }

并确实可以正常工作:

[1] 1.6428571 0.7428571 0.7857143 1.5714286 1.6000000 0.6857143 1.6714286 1.6428571 1.7428571 0.7142857 1.5714286 1.4285714 0.7285714 1.5428571 0.6428571 1.6571429 1.5714286 0.7000000
[19] 1.4714286 1.6428571 1.4714286 0.7000000 1.5714286 1.6285714 1.5714286 0.7857143 1.6142857 1.5714286 1.5000000 1.5714286 0.7428571 1.6285714 1.6142857 0.7857143 1.5285714 1.5714286

它将第一矢量列表中的每个元素与第二矢量列表中的相应元素相加。但是我已经尝试了好几天,没有运气,使用* apply重新编写了这段代码。

有人可以提示如何做吗?

瑞特尔

如果我正确理解了您的问题,则可以将向量添加到列表中-无需使用*apply函数:

featuresList[[2]] + featuresList[[3]]
#[1] 1.6428571 0.7428571 0.7857143 1.5714286 1.6000000 0.6857143 1.6714286 1.6428571 1.7428571 0.7142857 1.5714286 1.4285714 0.7285714

如果要添加列表中的所有向量,可以使用Reduce()@akrun建议的:

Reduce("+", featuresList)
#[1] 2.642857 1.742857 1.785714 2.571429 2.600000 1.685714 2.671429 2.642857 2.742857 1.714286 2.571429 2.428571 1.728571

这将返回存储在列表中的所有向量的总和(请注意,在这种情况下,这featuresList[[1]]是仅包含的(循环)向量1)。

我使用了部分数据:

featuresList <- list(1, c(1, 0, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0), c(0.64285714, 
0.74285714, 0.78571429, 0.57142857, 0.6, 0.68571429, 0.67142857, 
0.64285714, 0.74285714, 0.71428571, 0.57142857, 0.42857143, 0.72857143))

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在列表上使用apply()

来自分类Dev

R:在列表上使用Apply函数获取多个值的均值

来自分类Dev

在列表上使用Apply函数获取图

来自分类Dev

在R中的列表列表上分布向量

来自分类Dev

在列表和列表列表上执行功能(Erlang)

来自分类Dev

R中列表列表中的元素

来自分类Dev

组合 r 中的列表列

来自分类Dev

在R中的矩阵上应用Apply函数

来自分类Dev

列表列表中的R和向量

来自分类Dev

在R中从GoogleSheets清除列表列表

来自分类Dev

合并 R 中的列表列表

来自分类Dev

替换R中列表列表列中的值

来自分类Dev

使用列表中的对象名称以及R中的apply生成列名称

来自分类Dev

R:通过apply和rep命令使用列表索引

来自分类Dev

使用apply从R中的数据帧创建邻接矩阵列表

来自分类Dev

R计算列表中数据帧的行:for循环的行为与apply不同?

来自分类Dev

R在表列表上的prop.table()

来自分类Dev

R遍历列表列表,同时更改列表中的值

来自分类Dev

将`apply`映射到功能列表

来自分类Dev

使用 apply() 但获取类列表答案

来自分类Dev

_在apply()中的含义

来自分类Dev

在$ apply中刷新$ scope

来自分类Dev

_在apply()中的含义

来自分类Dev

在* apply中退出功能

来自分类Dev

在 Lisp 中 APPLY 的参数

来自分类Dev

从功能中的R中的列表列表中删除NA

来自分类Dev

在OUTER APPLY块中执行存储过程

来自分类Dev

在R中循环创建表列表

来自分类Dev

从R中的列表列创建单列向量