首页 > 解决方案 > 如何使用带有 R 的“每个”函数命名众多列?

问题描述

我使用 parse 和 each 创建了一个动态列表。我想将它添加到我的数据框中。鉴于此列表的长度为 10,我需要创建 10 个列名称,以便可以将列表的元素添加到数据框中。你知道如何一次命名许多列吗?

我尝试使用命令“名称”来创建列名,但我的数据框没有考虑到它

d %>% update(what=list(p_return_tpL=parse(text="xprev(p_return_t, -1)")))%>%
  update(what=list(lags <- 1:3 %>% each( function(k) parse(text=paste("xprev(eps_t, ", -k, ")")) ) ))

l <- (1:L)%>%each(function(k) parse(text=paste("xprev(eps_t,", -k,")" )))
names(l) <- paste0("dl", 1:L)

dataset <- d %>% update(what=list(p_return_tpL=parse(text="xprev(p_return_t, -1)"), names(l)=l))

当我这样做时,我得到了错误:

Error: unexpected '=' in "dataset <- d %>% update(what=list(p_return_tpL=parse(text="xprev(p_return_t, -1)"), names(l)="


我的数据样本是:

> d
       price_t eps_t    p_return_t
1     136.5962     1 -7.615930e-02
2     136.5200    -1  0.000000e+00
3     136.5251     1  0.000000e+00
4     136.5251     1  2.115385e-02
5     136.5960     1  0.000000e+00
6     136.5960     1  2.500000e-04
7     136.5962     1 -7.621599e-02

我希望它是

> d
       price_t eps_t    p_return_t  eps_t1  eps_t2 
1     136.5962     1 -7.615930e-02    -1      1
2     136.5200    -1  0.000000e+00     1      1
3     136.5251     1  0.000000e+00     1      1
4     136.5251     1  2.115385e-02     1      1
5     136.5960     1  0.000000e+00     1      1
6     136.5960     1  2.500000e-04     1     -1
7     136.5962     1 -7.621599e-02    -1      1

我想在这个数据集中添加这些列。我尝试了很多方法来为我创建的列分配名称,但是当我使用命令“names”时,它会命名每个元素,但我不能在命令“update”中使用它。我使用“更新”来更新我的数据框 d 并将我创建的列表添加到 d

如果你能给我一些提示来解决这个问题,我会很高兴

标签: reach

解决方案


推荐阅读