是否可以在R中的匿名函数中命名变量?

时间:2019-08-14 15:30:13

标签: r purrr

在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"

我也尝试在不同的地方使用括号,并继续出现相同的错误。

0 个答案:

没有答案