我有一个问题,将列名替换为具有映射函数的数据框名。我有25个包含加密货币时间序列数据的数据帧。
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“代表比特币,单位为美元:
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")。
在本例中,我使用了以下代码:
colnames(BTC.USD)[2] <-deparse(substitute(BTC.USD))这段代码的工作方式和我想象的一样:
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”映射:
names_of_dataframes <- ls.str(mode = "list")
map(names_of_dataframes, colnames(x)[2] <- names_of_dataframes[[i]])但它不起作用。有人能帮我吗?
发布于 2019-01-17 02:02:01
我们使用mget将数据集放入list,使用imap遍历list,使用.y对第二列执行rename操作,该列提供了data.frame对象名称
library(tidyverse)
mget(ls(pattern="USD")) %>%
imap(~ {nm1 <- .y
.x %>%
rename_at(2, ~ nm1) })https://stackoverflow.com/questions/54222803
复制相似问题