r - R - 你如何引用集合对象的边界?
问题描述
我正在使用(此处的文档)中的sets
包中的间隔对象。这些对象似乎表示为列表,但我在操作它们的元素时遇到了麻烦。这是区间及其结构和类的示例。创建的对象是类的,结构表明它是一种列表类型,包含区间的边界点、边界闭合的逻辑值以及表示它是实数区间的属性。R
"interval"
#Create and print an interval
INTERVAL <- sets::interval(l = 3, r = 9, bounds = 'closed');
INTERVAL;
[3, 9]
#Show class
class(INTERVAL);
[1] "interval"
#Show structure
str(INTERVAL);
List of 1
$ :List of 4
..$ l : num 3
..$ r : num 9
..$ lc: logi TRUE
..$ rc: logi TRUE
- attr(*, "domain")= chr "R"
#Extract boundary values
min(INTERVAL);
[1] 3
max(INTERVAL);
[1] 9
目前我可以使用上述命令提取边界值,但是一旦它们已经创建,我就无法重新分配它们。我尝试引用列表中的值。可以使用sets
包中的集合操作来获取集合的并集或交集,所以我可以这样做,但我希望能够在不执行集合操作的情况下直接更改对象。
我的问题:如何从INTERVAL
上面的对象中引用边界值?用另一个值替换它的一个边界的最简单方法是什么?
解决方案
您可以尝试这种方式,它有点骇人听闻,但我希望这会有所帮助。我不确定你是否想做这样的作业,你可能需要详细说明一下。我可能完全误解了你。请告诉我。
在此处使用 unclass 获取每个元素并在给定对象中分配。如果您取消分类,您可以单独访问每个列表组件,然后对其进行编辑。
INTERVAL <- sets::interval(l = 3, r = 9, bounds = 'closed');
intval <- unclass(INTERVAL)
intval[[1]]$l <- 0
class(intval) <- 'interval'
输出:
# > print(intval)
# [0, 9]
推荐阅读
- ffmpeg - 如何在特定秒内使用 ffmpeg 流式传输图像?
- flutter - 颤振类型'Future
' 不是类型 'Stream 的子类型 ? - flutter - 颤振错误:
- graphql - 使用 aws-amplify API 执行 graphql 更新突变
- javascript - 时区未来日期 - 邮递员
- c - 看门狗和电压控制不工作微控制器[AVR128DB48 Curiosity Nano]
- push - 我使用了 gcc 优化(优化大小)。调用 push_back 会导致硬故障。为了解决硬故障,我应该用什么替换 push_back?
- java - 将给定数组的元素向右旋转 k 次
- scala - Spark Scala 单元测试失败
- fiware - 如何通过FIWARE ORION CONTEXT BROKER批量(例如每1分钟)将传感器时间序列数据处理到时间序列数据库(例如CrateDB)?