我想将两个列表合并为一个,从每个列表中交替绘制元素
示例:
s1 <- list(1,2)
s2 <- list(3,4)
我不想要:
c(s1,s2)
相反,我想要
list(1,3,2,4)
答案 0 :(得分:2)
使用Map
将's1'和's2'的相应list
元素附加为list
,然后使用do.call(c
将嵌套列表展平到深度1。
do.call(c, Map(list, s1, s2))
或者另一种选择是将rbind
元素list
放入matrix
并使用dim
删除c
属性
c(rbind(s1, s2))
答案 1 :(得分:2)
这是一个有趣的Rcpp解决方案:
#include <Rcpp.h>
using namespace Rcpp;
// [[Rcpp::export]]
List abc(List x1, List x2) {
if(x1.size() != x2.size()) throw exception("lists must be same size");
List new_list(x1.size()*2);
for(size_t i=0; i<x1.size(); i++ ) {
new_list[2*i] = x1[i];
new_list[2*i+1] = x2[i];
}
return(new_list);
}
R:
library(Rcpp)
sourceCpp("abc.cpp")
abc(s1,s2)
[[1]]
[1] 1
[[2]]
[1] 3
[[3]]
[1] 2
[[4]]
[1] 4