0

我有一个简单的向量列表,我想复制每个长度为 1 的向量的元素。

mylist <- list(c(98, 102), c(175, 177), c(239, 240), c(146, 147, 168, 169
), c(240, 242), c(363, 391), c(144, 146, 146), 197, 126, c(181, 
192))

results  <- lapply(mylist,function(x) if(length(x)==1) rep(x[1],each=2))

我得到了预期复制的结果,但是如何将所有长度 >1 的向量保留在结果中?我找不到正确的方法来做到这一点。我很确定这很简单......

感谢您的帮助

4

1 回答 1

2

您可以简单地添加else语句以使元素具有更多值

mylist <- list(c(98, 102), c(175, 177), c(239, 240), c(146, 147, 168, 169
), c(240, 242), c(363, 391), c(144, 146, 146), 197, 126, c(181, 
192))

results  <- lapply(mylist,function(x) if(length(x)==1) rep(x[1],each=2) else x)

这导致

[[1]]
[1]  98 102

[[2]]
[1] 175 177

[[3]]
[1] 239 240

[[4]]
[1] 146 147 168 169

[[5]]
[1] 240 242

[[6]]
[1] 363 391

[[7]]
[1] 144 146 146

[[8]]
[1] 197 197

[[9]]
[1] 126 126

[[10]]
[1] 181 192
于 2013-09-03T20:10:04.430 回答