gpt4 book ai didi

r - 如何在 R 中创建一个数据框,当其他列之一发生更改时自动更新列?

转载 作者:行者123 更新时间:2023-12-02 03:33:30 26 4
gpt4 key购买 nike

这是我的输入

    > a<-data.frame(p=c(1:3),q=c(3:5))
> a
p q
1 1 3
2 2 4
3 3 5
> a<-a%>%mutate(r=p*q)
> a
p q r
1 1 3 3
2 2 4 8
3 3 5 15

修改一个单元格

   > a$p[1]<-2
> a
p q r
1 2 3 3
2 2 4 8
3 3 5 15

a$r[1] 尚未更新为 2*3=6

我希望输出是:

    > a
p q r
1 1 3 6
2 2 4 8
3 3 5 15

也就是说,我希望每当 p 或 q 之一发生变化时,r 的值就会自动更新。

最佳答案

您正在尝试复制 Excel 用户体验,对吗?编辑一个单元格应更新所有相关单元格。

Excel 的底层——以及 R 中最终的解决方案——是对所有可能的逻辑下游值的重新计算。必须有什么东西来触发它。在 Excel 中,触发器是更改单元格或执行重新计算命令。在 R 扩展中Shiny各种鼠标移动和点击都可以做到这一点。

是的,您可以编写一个方法来查看 a$p 中是否有任何成员或a$q已经改变了,但也必须有一些东西触发该脚本。 R 不提供始终运行的功能,例如 PC 中等待键盘输入或鼠标移动的部分。对于大多数目的,R 并不需要花费比仅仅计算 a[1,3] 更长的时间来进行所有可能的计算。基于新值 a[a,1] .

您可以创建一个函数来执行所有常规计算。您可以通过输入 recalc() 来启动它在控制台中。不需要参数。为其分配键盘快捷键并在对数据对象进行任何更改后运行它。

    recalc <- function() {
a$r <<- a$p * a$q
...
...
TRUE
}

超赋值运算符<<-允许您操纵全局环境中的对象,就像在控制台中键入命令一样。这不是通常构建函数的方式。

关于r - 如何在 R 中创建一个数据框,当其他列之一发生更改时自动更新列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51127603/

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