R:处理列表,计算每个元素值之间的差异

时间:2014-03-19 01:20:18

标签: r

我有一个名为good的列表,我想计算每个向量中两个值之间的差异。

good[1:2]
[[1]] 
 [1]    8   16   28   38   53
[[2]]
 [1]    1    7    9   16   40 

所以我会得到另一个清单

good_dif1[1:2] 
[[1]]
 [1] 8 12 10 15 
[[2]]
 [2] 6 2 7 24

如果我想要将NA插入第一个值,我该怎么做?

所以我会得到另一个清单

good_dif2[1:2]
[[1]] 
 [1] NA 8 12 10 15 
[[2]] 
 [2] NA 6 2 7 24 

2 个答案:

答案 0 :(得分:5)

使用lapply

good <- list(c(NA,1,10,30,40), c(NA,3,4,5,10,20))
lapply(good, diff)

第二部分,

lapply(good, function(x)c(NA, diff(x)))

Map(c, NA, lapply(good, diff))

希望能帮助。

答案 1 :(得分:1)

> good <- list(c(8, 16, 28, 38, 53), c(1, 7, 9, 16, 40)) 
> good_dif1 <- lapply(good, diff)  
> good_dif2 <- lapply(good_dif1, function(x) append(NA, x))
> good_dif2
## [[1]]
## [1] NA  8 12 10 15

## [[2]]
## [1] NA  6  2  7 24