1: AAA cd 1 >2: BBB gh 2 >3: BBB kl -6ren">
gpt4 book ai didi

r - "object ' ansvals ' not found"错误 - 这是什么意思?

转载 作者:行者123 更新时间:2023-12-04 17:46:10 32 4
gpt4 key购买 nike

例如,从我的简单 data.table 中,像这样:

dt1 <- fread("
col1 col2 col3
AAA ab cd
BBB ef gh
BBB ij kl
CCC mn nm")

例如,我正在制作新表,如下所示:
dt1[,
.(col3, new=.N),
by=col1]

> col1 col3 new
>1: AAA cd 1
>2: BBB gh 2
>3: BBB kl 2
>4: CCC op 1

当我明确指出列名时,这很好用。但是当我将它们放在变量中并尝试使用 with=F 时,这给出了一个错误:
colBy   <- 'col1'
colShow <- 'col3'

dt1[,
.(colShow, 'new'=.N),
by=colBy,
with=F]
# Error in `[.data.table`(dt1, , .(colShow, new = .N), by = colBy, with = F) : object 'ansvals' not found

到目前为止,我找不到有关此错误的任何信息。

最佳答案

您收到此错误消息的原因是在使用 with=FALSE 时你告诉 data.table 处理 j好像它是一个数据框。因此,它期望在 j 中计算列名向量而不是表达式。如 new=.N .

来自 ?data.table 的文档关于 with :

By default with=TRUE and j is evaluated within the frame of x; column names can be used as variables. When with=FALSE j is a character vector of column names or a numeric vector of column positions to select, and the value returned is always a data.table.



当您使用 with=FALSE ,您必须选择 j 中的列名没有 .之前 ()像这样: dt1[, (colShow), with=FALSE] .其他选项是 dt1[, c(colShow), with=FALSE]dt1[, colShow, with=FALSE] .使用 dt1[, .(col3)] 可以获得相同的结果

总结一下: with = FALSE用于以data.frame方式选择列。所以,你应该这样做。

也可以使用 by = colBy您正在告诉 data.table 进行评估 j这与 with = FALSE 矛盾.

来自 ?data.table 的文档关于 j :

A single column name, single expresson of column names, list() of expressions of column names, an expression or function call that evaluates to list (including data.frame and data.table which are lists, too), or (when with=FALSE) a vector of names or positions to select.

j is evaluated within the frame of the data.table; i.e., it sees column names as if they are variables. Use j=list(...) to return multiple columns and/or expressions of columns. A single column or single expression returns that type, usually a vector. See the examples.



另见积分 1.d and 1.g of the introduction vignette数据表。
ansvals是在 data.table 内部使用的名称。您可以使用 ctrl+f (Windows) 或 cmd+f (macOS) here 查看它在代码中的位置.

关于r - "object ' ansvals ' not found"错误 - 这是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33851742/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com