[英]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.