[英]R replace the column name by the dataframe name with a loop
我對使用R進行編程非常陌生,但是我嘗試使用for循環將列名稱替換為數據框名稱。 我有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"
每個對象都是一個數據框,代表以美元表示的加密貨幣。 每個數據框都有2個位置:日期和關閉(收盤價)。 例如:數據框“ 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.
現在,我想用數據框的名稱(“ BTC.USD”)替換第二列(“ Close”)的名稱。
對於這種情況,我使用了以下代碼:
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.
現在,我正在嘗試創建一個循環,以更改加密貨幣數據的所有25個數據幀的第二列名稱:
df_list <- ls(pattern="USD")
for(i in df_list){
aux <- get(i)
(colnames(aux)[2] =df_list)
assign(i,aux)
}
但是代碼沒有按照我的想法工作。 有人可以幫我弄清楚我所缺少的步驟嗎?
提前致謝!
您可以使用Map
來分配名稱,即
Map(function(x, y) {names(x)[2] <- y; x}, l2, names(l2))
#$`a`
# v1 a
#1 3 8
#2 5 6
#3 2 7
#4 1 5
#5 4 4
#$b
# v1 b
#1 9 47
#2 18 48
#3 17 6
#4 5 25
#5 13 12
數據
dput(l2)
list(a = structure(list(v1 = c(3L, 5L, 2L, 1L, 4L), v2 = c(8L,
6L, 7L, 5L, 4L)), class = "data.frame", row.names = c(NA, -5L
)), b = structure(list(v1 = c(9L, 18L, 17L, 5L, 13L), v2 = c(47L,
48L, 6L, 25L, 12L)), class = "data.frame", row.names = c(NA,
-5L)))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.