2017-10-10 219 views
0

我正在写一个大功能。我想用mapply函数在列表上运行一个函数。mapply功能不能按预期工作

我有这样的:

x <- list(1,3, 4, 5) 
y <- list(5,6,7,3) 
res <- mapply(x , y , FUN = function(x, y) double(x + y)) 
[[1]] 
[1] 0 0 0 0 0 0 

[[2]] 
[1] 0 0 0 0 0 0 0 0 0 

[[3]] 
[1] 0 0 0 0 0 0 0 0 0 0 0 

[[4]] 
[1] 0 0 0 0 0 0 0 0 

我想的结果是因为只有两个列表。像这样:

[[1]] 
0 0 0 0 0 

[[2]] 
0 0 0 0 0 

所以我想这两个列表的答案只是不是列表中的每个元素。

我该怎么做?

+1

你能解释一下你的输出吗,这两次5零是从哪里来的?现在,实际输出的第一个元素只是6个零,因为'1 + 5 == 6'。 – Axeman

+0

@missuse我试了一下,得到了这个:'> startpar [1] 10 10' – Heblany

+0

@Axeman谢谢你的评论。我真的很喜欢你。我不懂为什么。 – Heblany

回答

0

尝试lapply功能。

my_list(x,y) 
m <- length(my_list) 
lapply(1:m, function(i) double(x[[i]]+y[[i]])) 

你的列表长度是4,所以你不能除了它是两个输出!