首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R将列名称替换为具有map-function的数据帧名称

R将列名称替换为具有map-function的数据帧名称
EN

Stack Overflow用户
提问于 2019-01-17 01:59:33
回答 1查看 457关注 0票数 2

我有一个问题,将列名替换为具有映射函数的数据框名。我有25个包含加密货币时间序列数据的数据帧。

代码语言:javascript
复制
ls(pattern="USD")
[1] "ADA.USD"   "BCH.USD"   "BNB.USD"   "BTC.USD"   "BTG.USD"   "DASH.USD"      "DOGE.USD"  "EOS.USD"   "ETC.USD"   "ETH.USD"   "IOT.USD"
[12] "LINK.USD"  "LTC.USD"   "NEO.USD"   "OMG.USD"   "QTUM.USD"  "TRX.USD"   "USDT.USD"  "WAVES.USD" "XEM.USD"   "XLM.USD"   "XMR.USD"
[23] "XRP.USD"   "ZEC.USD"   "ZRX.USD" 

每个对象都是一个数据帧,它代表以USD表示的加密货币。每个dataframe有两个clomuns: Date和Close (收盘价)。例如:数据帧"BTC.USD“代表比特币,单位为美元:

代码语言:javascript
复制
head(BTC.USD)
# A tibble: 6 x 2
Date       Close
1 2015-12-31  430.
2 2016-01-01  434.
3 2016-01-02  434.
4 2016-01-03  431.
5 2016-01-04  433.

现在我想将第二列的名称("Close")替换为数据帧的名称("BTC.USD")。

在本例中,我使用了以下代码:

代码语言:javascript
复制
colnames(BTC.USD)[2] <-deparse(substitute(BTC.USD))

这段代码的工作方式和我想象的一样:

代码语言:javascript
复制
head(BTC.USD)
# A tibble: 6 x 2
Date       BTC.USD
1 2015-12-31    430.
2 2016-01-01    434.
3 2016-01-02    434.

现在,我尝试使用一个-columns函数来重命名所有25个加密货币数据帧的所有“Close”映射:

代码语言:javascript
复制
names_of_dataframes <- ls.str(mode = "list")
map(names_of_dataframes, colnames(x)[2] <- names_of_dataframes[[i]])

但它不起作用。有人能帮我吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-01-17 02:02:01

我们使用mget将数据集放入list,使用imap遍历list,使用.y对第二列执行rename操作,该列提供了data.frame对象名称

代码语言:javascript
复制
library(tidyverse)
mget(ls(pattern="USD")) %>%         
              imap(~ {nm1 <- .y
                      .x %>% 
                         rename_at(2, ~ nm1) })
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54222803

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档