我有一个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] 删除。
我来说两句