【发布时间】:2020-12-16 11:32:44
【问题描述】:
我想使用 purrr 包中的 map() 来迭代我的数据框的变量子集。有没有标准和方便的方法?
采取以下示例数据集:
library(data.table)
library(purrr)
dt <- data.table(id= c("Alpha 1","Alpha 2","Alpha 3","Beta 1"),
id2= c("gamma 1","gamma 2","gamma 3","Delta 1") ,
y = rnorm(4))
id id2 y
1: Alpha 1 gamma 1 -1.1184009
2: Alpha 2 gamma 2 0.4347047
3: Alpha 3 gamma 3 0.2318315
4: Beta 1 Delta 1 1.2640080
每当有空格 (" ") 时,我想拆分我的 id 列。最终数据集应如下所示。
id numberid id2 numberid2 y
1: Alpha 1 gamma 1 -1.45772675
2: Alpha 2 gamma 2 -1.07430118
3: Alpha 3 gamma 3 -0.53454071
4: Beta 1 Delta 1 -0.05854228
我当时就知道如何做这一栏:
dt_m <- dt%>%separate(id,
sep=" ", c("id","numberid"))
id numberid id2 y
1: Alpha 1 gamma 1 2.0789930
2: Alpha 2 gamma 2 -0.2528485
3: Alpha 3 gamma 3 0.1332267
4: Beta 1 Delta 1 1.9299524
但我想在多列上使用 map 对其进行迭代。有谁知道方便的方法
-
在一组列上使用 map 迭代,返回一个数据框
-
并使用列作为索引和字符串(粘贴数字“id”和数字“id2”)?
我尝试过类似的方法,但它会产生一个空数据框
vars <- c("id","id2")
dt2 <- dt%>%map_df(vars,~separate(.x,sep=" ", c((.x), "number")))
非常感谢您的帮助
【问题讨论】: