gpt4 book ai didi

r - 使用 data.table 列中的丰富对象

转载 作者:行者123 更新时间:2023-12-04 23:21:58 25 4
gpt4 key购买 nike

假设我有一个 data.table,其中一列包含线性模型:

library(data.table)
set.seed(1014)

dt <- data.table(
g = c(1, 1, 2, 2, 3, 3, 3),
x = runif(7),
y = runif(7)
)

models <- dt[, list(mod = list(lm(y ~ x, data = .SD))), by = g]

现在我想从每个模型中提取 r 平方值。我可不可以做
比这个更好?
models[, list(rsq = summary(mod[[1]])$r.squared), by = g]

## g rsq
## 1: 1 1.000000
## 2: 2 1.000000
## 3: 3 0.004452

理想情况下,我希望能够消除 [[1]]而不是依赖
知道以前的分组变量(我知道我希望每一行都是
它是自己的组)。

最佳答案

这只是 summary作为一个糟糕的小函数,它没有被矢量化。那么如何手动对其进行矢量化(这与@mnel 的解决方案大致相同):

r.squared = Vectorize(function(x) summary(x)$r.squared)

models[, rsq := r.squared(mod)]
models
# g mod rsq
#1: 1 <lm> 1.000000000
#2: 2 <lm> 1.000000000
#3: 3 <lm> 0.004451631

关于r - 使用 data.table 列中的丰富对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22974044/

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