在R中进行嵌套映射时,我经常需要对输入进行少量更改,然后才能进入下一个映射。在那种情况下,我不想为此编写函数,因为这是一个很小的更改,但是我无法将其放入一个管道调用中。有什么方法可以在匿名函数中进行赋值,然后将其提供给下一个映射?
# Reprex
data = list(
`3` =list(
'1' <- c(1, 2),
'2' <- c(3,4)
),
`4` = list(
'3' <- c(5,6),
'4' <- c(7,8)
)
)
# Sum up the element of each list, and then add the name of the list to the sum.
imap(data, function(stuff, name) map(stuff, function(x) sum(x) + as.numeric(name)))
# But what if I want to change the value of the name before feeding into next map?
imap(data, function(stuff, name) name = 2 * as.numeric(name)
map(stuff, function(x) sum(x) + as.numeric(name)))
这给出了错误:
Error: unexpected symbol in "imap(data, function(stuff, name) name = 2 * as.numeric(name) map"
我也尝试在不同的地方使用括号,并继续出现相同的错误。