使用get()在R数据表中找不到数字列。

问题描述 投票:0回答:1

我有一个数据化的数据,有几个数字列名,为了方便即时查询。2020-42020-5. 我把它称为 Nouvelle_periode = "2020-5"Ancienne_periode = "2020-4" 我通过在这些列上使用 get 如前 此处.

但要删除一列,它似乎没有工作。

这个可以。Test_2 <- Test[,Revision:=get(Nouvelle_periode) - get(Ancienne_periode)]

但这个不行: Test_3 <- Test_2 [,get(Ancienne_periode):=NULL] (我得到的错误是 object 2020-4 not found纵使它还是

我也不知道为什么。

这里有一个MWE 。

library(data.table)
Nouvelle_periode = "2020-5"
Ancienne_periode = "2020-4"

Test <- data.table(Zone = c("Allemagne", "Allemagne", "Allemagne", 
  "Allemagne", "Espagne", "Espagne", "Espagne", "Espagne", "Etats-Unis", 
  "Etats-Unis", "Etats-Unis", "Etats-Unis", "France", "France", 
  "France", "France", "Italie", "Italie", "Italie", "Italie", "Japon", 
  "Japon", "Japon", "Japon", "Monde", "Monde", "Monde", "Monde", 
  "Royaume-Uni", "Royaume-Uni", "Royaume-Uni", "Royaume-Uni", "Zone euro", 
  "Zone euro", "Zone euro", "Zone euro"), Periode = c("2020", "2020", 
    "2021", "2021", "2020", "2020", "2021", "2021", "2020", "2020", 
    "2021", "2021", "2020", "2020", "2021", "2021", "2020", "2020", 
    "2021", "2021", "2020", "2020", "2021", "2021", "2020", "2020", 
    "2021", "2021", "2020", "2020", "2021", "2021", "2020", "2020", 
    "2021", "2021"), Grandeur = c("IPC", "PIB", "IPC", "PIB", "IPC", 
    "PIB", "IPC", "PIB", "IPC", "PIB", "IPC", "PIB", "IPC", "PIB", 
    "IPC", "PIB", "IPC", "PIB", "IPC", "PIB", "IPC", "PIB", "IPC", 
    "PIB", "IPC", "PIB", "IPC", "PIB", "IPC", "PIB", "IPC", "PIB", 
    "IPC", "PIB", "IPC", "PIB"), `2020-4` = c(0.7, -5, 1.4, 4.5, 
 -0.4, -5.7, 1.3, 5.2, 0.8, -4, 1.8, 3.9, 0.4, -5.4, 1.3, 5.1, 
 -0.2, -7.5, 0.6, 4.5, -0.1, -3.3, 0.2, 2.1, 2.1, -2.1, 2.4, 4.4, 
 1, -5.4, 1.6, 4.7, 0.4, -5.7, 1.3, 5.4), 
 `2020-5` = c(0.6, -6.3, 1.4, 5.2, -0.4, -9.1, 1, 6.7, 0.7, -5.4, 1.8, 4.3, 0.3, -8.2, 
1.2, 6.7, -0.2, -9.9, 0.6, 6.3, -0.4, -5.5, 0.1, 2.4, 2, -4.1, 2.3, 5.1, 1, -7.9, 1.4, 6.1, 0.3, -7.9, 1.1, 6.2))


Test_2 <- Test[,Revision:=get(Nouvelle_periode) - get(Ancienne_periode)]
Test_3 <- Test_2 [,get(Ancienne_periode):=NULL]
r datatable data-manipulation
1个回答
2
投票

不需要 get,使用 c(...) 上边 := 运营商。

head( Test_2 [,c(Ancienne_periode) := NULL] )
#         Zone Periode Grandeur 2020-5 Revision
# 1: Allemagne    2020      IPC    0.6     -0.1
# 2: Allemagne    2020      PIB   -6.3     -1.3
# 3: Allemagne    2021      IPC    1.4      0.0
# 4: Allemagne    2021      PIB    5.2      0.7
# 5:   Espagne    2020      IPC   -0.4      0.0
# 6:   Espagne    2020      PIB   -9.1     -3.4
© www.soinside.com 2019 - 2024. All rights reserved.