求助:sample_n()与slice_sample()在map()中使用的不一致问题
解决slice_sample()在map()中替代sample_n()的参数问题
问题根源
sample_n()和slice_sample()的参数传递逻辑存在差异:
sample_n()的参数顺序为(tbl, n),在map(c(1,2,3), sample_n, tbl = mtcars)中,map会自动将向量中的数值作为第二个位置参数传给n,与指定的tbl=mtcars匹配,因此能正常运行。slice_sample()的参数顺序为(.data, n),如果直接写map(c(1,2,3), slice_sample, .data = mtcars),map会把向量数值作为第一个位置参数传给.data,和你显式指定的.data=mtcars冲突,且未传递n参数,导致报错提示“n必须显式命名”。
两种可行解决方法
方法1:使用匿名函数(直观易懂)
通过匿名函数明确将map遍历的数值传给slice_sample()的n参数:
map(c(1, 2, 3), ~slice_sample(mtcars, n = .x))
方法2:显式指定n参数(利用purrr占位符)
在map中通过.占位符,将遍历的数值直接绑定到slice_sample()的n参数:
map(c(1, 2, 3), slice_sample, .data = mtcars, n = .)
内容的提问来源于stack exchange,提问作者Grasshopper_NZ
相关产品推荐
相关产品推荐

