首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在R中,修改类中的值

在R中,修改类中的值
EN

Stack Overflow用户
提问于 2018-11-08 11:31:19
回答 1查看 60关注 0票数 2

也许我把R类看作是C或Java中的类,但我似乎不能修改值:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
test <- function() {

  inc <- function() {
    x <- attr( obj, "x" )
    x <- x + 1
    print(x)
    attr( obj, "x" ) <- x
    return( obj )
  }

  obj <- list(inc=inc)
  attr( obj, "x" ) <- 1
  class(obj) <- c('test')
  return( obj )
}

当我运行这个:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
> t <- test()
> t <- t$inc()
[1] 2
> t <- t$inc()
[1] 2

就好像原始的类对象不能被修改一样。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-11-08 12:52:26

可以使用R的词法作用域机制来实现类似于C或Java的对象定向。使用<<-在父环境中分配值。

下面是示例的简化版本。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
test <- function() {
    inc <- function() {
        x <<- x + 1
        print(x)
    }
    x <- 1
    list(inc=inc)
}
obj <- test()
obj$inc()
[1] 2
obj$inc()
[1] 3

参见?refClass-class中所谓的“引用类”。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53214873

复制
相关文章
【C 语言】指针间接赋值 ( 直接修改 和 间接修改 指针变量 的值 | 在函数中 间接修改 指针变量 的值 | 在函数中 间接修改 外部变量 的原理 )
直接修改 指针变量 的值 , 就是为其赋值一个地址值 , 使用 & 取地址符 , 将变量地址赋值给指针变量 , 或者使用 malloc 函数分配内存赋值给 指针变量 ;
韩曙亮
2023/03/29
21.4K0
【C 语言】指针间接赋值 ( 直接修改 和 间接修改 指针变量 的值 | 在函数中 间接修改 指针变量 的值 | 在函数中 间接修改 外部变量 的原理 )
通过Java反射机制修改Java类中final类型变量的值
Field demo1List = demo1Class.getDeclaredField("list");
用户7886150
2020/12/03
1.7K0
R中重复值、缺失值及空格值的处理
1、R中重复值的处理 unique函数作用:把数据结构中,行相同的数据去除。 #导入CSV数据 data <- read.csv('1.csv', fileEncoding = "UTF-8", stringsAsFactors = FALSE); #对重复数据去重 new_data <- unique(data) 重复值处理函数:unique,用于清洗数据中的重复值。 “dplyr”包中的distinct() 函数更强大: distinct(df,V1,V2) 根据V1和V2两个条件来进行去重 uniq
Erin
2018/01/09
8.2K0
Android中R文件ID值
前端时间在学习 Qigsaw 相关的源码,思考到一个问题。动态加载的feature 包里的 资源id 是否会与主包中的 资源id 冲突。因为主包的 apk 文件不一定是和加载的feature 包是一起打包生成的,feature 包是可以进行升级的。查看 Qigsaw编译脚本对 old.apk 进行增量编译 feature 的时候也没有发现对 R文件 做特殊的处理。
静默加载
2021/01/11
2.8K0
Android中R文件ID值
linux:sed修改xml中的值示例
上面的xml中有server.start,xhr.start,restful.start.等三个前缀不同后缀相同的字段。 现在希望通过shell脚本修改server.start字段为false.
10km
2021/12/17
3.3K0
小程序修改数组中对象的某个值或者修改对象值
setData的时候要修改的值是不需要加this.data.xxx的,直接xxx,
蓓蕾心晴
2018/07/24
6.2K0
在Ubuntu中修改hosts配置
最近在使用ubuntu开发,难免需要配置hosts,下面介绍以下使用命令进行配置的操作流程。
程思扬
2022/01/11
20.5K0
[Office] 在Excel中,如何根据值求出其在表中的坐标
在使用excel的过程中,我们知道,根据一个坐标我们很容易直接找到当前坐标的值,但是如果知道一个坐标里的值,反过来求该点的坐标的话,据我所知,excel没有提供现成的函数供使用,所以需要自己用VBA编写函数使用 (代码来自互联网)
轻舞飞扬SR
2021/02/24
8.8K0
Vue directive中修改v-model值
最近在重构一个旧项目,这个项目用到了一些bootstrap的插件,我们想保留这些插件,就会遇到一些问题,比如我们把插件封装成了directive,在双向绑定方面需要做如下处理:
javascript.shop
2019/11/13
2.9K0
Oracle 触发器中修改字段值
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wzy0623/article/details/53909715
用户1148526
2019/05/25
1.8K0
小程序中setData修改属性值
1.修改对象属性 1>第一种 changePerson:function(e){ var str = 'person.name'; this.setData({ [str]: 'fxjzzyo' }) }, 2>第二种 changePerson:function(e){ this.setData({ 'person.name': 'fxjzzyo' }) }, 2.修改数组属性 this.setData({ ["array[" +
leader755
2022/03/07
1.2K0
Mysql与Oracle中修改列的默认值
背景: 业务发展需要,需要复用历史的表,并且通过表里面原来一个未使用的字段来区分不同的业务。 于是想到通过default来修改列的默认值: alter table A modify column biz default 'old' comment '业务标识 old-老业务, new-新业务' 现象: 上线几天之后,业务反馈旧业务的相关数据查询不到了。找后台运维查生产数据库,发现历史数据的biz字段还是null 原因: 自己在本地mysql数据库试了下,好像的确是default没法修改历史数据为null
SecondWorld
2021/09/08
13.2K0
保护你的文件,请修改 Linux 中的 Umask 值
这篇教程教将指导 Linux 用户如何永久性地更改其系统的 Umask 值。特别建议全新安装的用户学习(想知道为什么的话,请移步下文) Umask 是什么?解释下,UMASK 代表用户掩码或用户文件创
小小科
2018/05/02
2.2K0
保护你的文件,请修改 Linux 中的 Umask 值
在vscode中配置R的开发环境
有时候各位使用R的用户不知道会不会有这样的感觉,visual studio和Rstudio由于负载过重,在打开或者加载R script时会出现加载过慢的情况,但对于很多数据工作者来说,variable inspector和data view这类的数据可视化功能必不可少,而visual studio和Rstudio在这方面做得可以说是非常完善。在这时候笔者就想到了visual studio code,毕竟作为宇宙最强IDE的减配和开源版本(这里形容可能不太准确),各种语言相应的开发插件众多。更加让笔者惊喜的是,目前vscode-R一直处于开发阶段,并且在最近的1.2.0版本结合了vscode关于web view的API,添加了R session watcher——一个集成的数据可视化构架,并且在1.21中完善了windows系统下的extension的bug。我们来看看集成的viewer会有什么样的效果:
用户7652506
2020/08/12
11.8K0
在vscode中配置R的开发环境
「R」ggplot2在R包开发中的使用
没有特别系统的学习 tidy evaluation 这方面的高级操作,最近有空准备补一补,学习下这方面的知识。
王诗翔呀
2022/03/30
6.7K0
在Android Studio中修改maven私库的地址[通俗易懂]
在.gradle目录中,修改init.gradle文件,修改其中的maven地址。 在.m2目录中,修改settings.xml文件,修改其中的maven地址。
全栈程序员站长
2022/09/09
2.6K0
在python中实现final类
当然要利用下metaclass做手脚啦 class Final(type): def __new__(cls, name, bases, classdict): for b in bases: if isinstance(b, Final): raise TypeError("type '{0}' is Final type".format(b.__name__)) return type.__new__(cls
超级大猪
2019/11/21
2.9K0
如何在Vue实例中修改message数据属性的值?
在 Vue 实例中修改 message 数据属性的值,可以通过多种方式实现,取决于你希望在哪个上下文中进行修改。
王小婷
2023/09/21
3090
点击加载更多

相似问题

在R6类中强制就地修改(在R中)

10

如何修改列表中的某些值(在R中)

34

在R中修改data.table中的值

20

基于R中条件的值修改

28

R中不作修改的替换NA值

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文