簡體   English   中英

使用eval()命名R中的data.table列時出錯

[英]Error using eval() to name data.table column in r

我的目標是根據另一個變量的值命名數據表的新列。 通常,這很簡單,但是對於數據表,任何輸入的列名都將被視為字符串,而不是變量(我認為?)

為此,我認為我將利用eval函數。 我的代碼:

library(data.table)

DT <- data.table(x = c(1,1,2,2,3), y = 6:10, z = 11:15)

sumtitle <- "Sum"

Output <- DT[ , j = list(eval(sumtitle) = sum(y)), by = x]

但這又回來了

Error: unexpected '=' in "Output <- DT[ , j = list(eval(sumtitle) ="

這對我來說很奇怪,因為

> eval(sumtitle)
[1] "Sum"

Output <- DT[ , j = list("Sum" = sum(y)), by = x]

如預期般運作。

任何幫助將非常感激。

問題不data.table 您正在嘗試將參數名稱指定為表達式,這直接不合法:

sumtitle <- "Sum"
y <- 1:10
list(eval(sumtitle) = sum(y))
# Error: unexpected '=' in "list(eval(sumtitle) ="

產生相同的錯誤。 請嘗試:

DT[ , j = setNames(list(sum(y)), sumtitle), by = x]

   x Sum
1: 1  13
2: 2  17
3: 3  10

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM