R 在lappy可选参数中使用.data代词两次
我想使用一个lappy函数将列表项传递给FUN中的两个参数 例如,鉴于:R 在lappy可选参数中使用.data代词两次,r,lapply,R,Lapply,我想使用一个lappy函数将列表项传递给FUN中的两个参数 例如,鉴于: > lapply(state.abb, paste, c(.data, 2)) [[1]] [1] "AL 2" [[2]] [1] "AK 2" 在这里,我可以将list参数.data和2传递给粘贴函数。但是在我的应用程序中,我想将.data传递给两个粘贴参数。在我的想象中,这就是代码和输出: >lapply(state.abb, paste, c(.data, .
> lapply(state.abb, paste, c(.data, 2))
[[1]]
[1] "AL 2"
[[2]]
[1] "AK 2"
在这里,我可以将list参数.data
和2传递给粘贴
函数。但是在我的应用程序中,我想将.data
传递给两个粘贴
参数。在我的想象中,这就是代码和输出:
>lapply(state.abb, paste, c(.data, .data))
[[1]]
[1] "AL AL"
[[2]]
[1] "AK AK"
但我得到的是
> lapply(state.abb, paste, c(.data, .data))
[[1]]
[1] "AL "
[[2]]
[1] "AK "
在本例中,我可以再次提供state.abb,但在我的实际用例中,这是一个更大的数据集的一部分,我正尽量避免命名对象
非常感谢您的帮助 您可以使用匿名函数:
lapply(state.abb, function(x) paste(x, x))
或者粘贴,然后将其列为一个列表
as.list(paste(state.abb, state.abb))
.data
代词是一个tidyverse(dplyr/ggplot2)词。它不适用于基本函数,如lappy
。(事实上,如果您在未加载dplyr
或ggplot2
的情况下运行该代码,则应该会出现“未找到对象”错误)。.data
基本上被定义为一个空列表,如果其他函数使用它,那么它不会为您做任何事情。所以这些都是完全一样的
lapply(state.abb, paste, c(.data, 2))
lapply(state.abb, paste, c(list(), 2))
lapply(state.abb, paste, list(2))
如果要将同一参数多次用于lappy
,则需要编写自己的函数
lapply(state.abb, function(x) paste(x, x))
或者,您可以使用purrr::map
函数,并使用.x
对数据使用函数的公式语法
purrr::map(state.abb, ~paste(.x, .x))
不一定是比上述解决方案更好的解决方案,而是另一个:
Map(function(state.abb, i) paste(i, state.abb), state.abb, state.abb)
Map(粘贴,state.abb,state.abb)