gpt4 book ai didi

r - 在 lapply 中使用 data.table 时 get 中的第一个参数无效

转载 作者:行者123 更新时间:2023-12-04 15:39:45 25 4
gpt4 key购买 nike

这是一个 data.table 和一个返回列表的函数 minmax:

library(data.table)
DT = data.table(
x = c(1.59631745098427, -1.82698333087074, -1.69796526239799,
-0.69409651665197, 0.360640961221989),
y = c(-2.11104985109763, -1.49347081392737, 1.49801321753262,
-0.736044012256148, 1.68957962245701),
Factor1 = c("a", NA, "a", "a", "a"),
Factor2 = c("UU", "UU", "UU", "UU", "UU"),
Factor3 = c("GHI", "GHI", "DEF", "ABC", "DEF"),
x_FACTOR = c("(1,2]", "(-2,-1]", "(-2,-1]", "(-1,0]", "(0,1]"),
y_FACTOR = c("(-3,-2]", "(-2,-1]", "(1,2]", "(-1,0]", "(1,2]"),
Factor1_FACTOR = c("a", NA, "a", "a", "a"),
Factor2_FACTOR = c("UU", "UU", "UU", "UU", "UU"),
Factor3_FACTOR = c("GHI", "GHI", "DEF", "ABC", "DEF")
)

minmax <- function(x) list(min = min(x), max = max(x))

names(DT)
# [1] "x" "y" "Factor1" "Factor2" "Factor3"
# [6] "x_FACTOR" "y_FACTOR" "Factor1_FACTOR" "Factor2_FACTOR" "Factor3_FACTOR"

我能做到:

DT[, minmax(get("x"))]
# min max
# 1: -1.826983 1.596317

但是在 lapply 中我得到一个错误:

lapply(c("x", "y"), function(x) DT[, minmax(get(x))])
# Error in get(x) : invalid first argument

非常奇怪的是,这来自上传数据集的 Shiny 应用程序,而对于其他数据集,我没有收到此错误。


编辑

我刚刚观察到它是这样工作的:

lapply(c("x", "y"), function(u) DT[, minmax(get(u))])

欢迎任何解释。

最佳答案

问题是有一个名为 x 的列,所以作用域意味着 x 该列在 x 来自 的参数之前找到应用。你可以这样观察:

lapply(c("x", "y"), function(x) DT[, minmax({dput(x); get(x)})])
# c(1.59631745098427, -1.82698333087074, -1.69796526239799, -0.69409651665197, 0.360640961221989)

关于r - 在 lapply 中使用 data.table 时 get 中的第一个参数无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58216754/

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