Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/191.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 在lappy可选参数中使用.data代词两次_R_Lapply - Fatal编程技术网

R 在lappy可选参数中使用.data代词两次

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, .

我想使用一个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, .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)