r - S4 对象是否有类似 lapply 的功能?
问题描述
将函数应用于 S4 中的所有插槽。
当然,也可以通过 for-loop over 来完成slotNames()
。但我很好奇它是否可以以矢量化方式完成。
解决方案
一般来说,不可能以矢量化的方式对插槽进行操作,因为插槽可能有任何类。如果一个类有结构
slotA = "factor"
slotB = "integer"
slotC = "numeric"
那么即使您可能对所有这些(例如summary
)应用相同的(通用)函数,实际调用的方法也会有所不同。该任务是不可矢量化的,正如“拖地、洗车和吸尘地毯”的命令集可以矢量化一样,即使它们可能都共享通用功能clean
——你需要一个拖把来完成一项任务,一个另一个是海绵,第三个是吸尘器。(相比之下,“将卧室、走廊和休息室的三块地毯吸尘”的指令集可以在一定程度上进行矢量化——您不必将真空吸尘器从盒子中取出三次,然后将其收起三次次,你可以只做一次)
如果你可以保证所有的槽都属于同一个类,那么向量化就变得更容易了,但是如果是这样的话,为什么这个对象有它的结构呢?如果它需要是 S4,那么只需定义一个包含列表、矩阵或数组的简单类,然后根据需要使用sapply
或apply
。
推荐阅读
- typescript - Vue+typescript渲染前如何等待组件中的数据
- python - 匹配列表中的点对以进行单应性
- android - 为什么我的评分栏显示的星星被截断了?
- javascript - 不推荐使用正文解析器 undefined extended:提供扩展选项
- html - 用不确定的列数划分网格
- linux - Wildfly 服务无法启动
- java - 使用原子非阻塞方法与同步的单例
- angular - Angular4 http 重复调用
- javascript - Javascript:将项目插入数组的确切中心
- javascript - 未经我的许可,正在单击脚本中的按钮。JavaScript 琐事游戏