我有一个简单的向量列表,我想复制每个长度为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的向量?我找不到一个正确的方法来做到这一点。我很确定这很简单......
Thanx帮助
答案 0 :(得分: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