我第一次尝试在R中使用OOP,我很难理解主要概念。例如,这些是什么:
slot, setGeneric, representation
我无法通过搜索互联网找到任何有用的信息。这些如何在R中起作用?例如,我有以下MATLAB类:
classdef windTurbine < handle
properties
NumOfBlades
blade@blade
sweptArea
end
methods
function obj = windTurbine(NumOfBlades,blade)
obj.NumOfBlades = NumOfBlades;
obj.blade = blade;
obj.sweptArea = CalcSweptArea(obj);
end
sweptArea = CalcSweptArea(obj)
end
我如何在R中写这个?如何向构造函数添加计算?使功能私密?并且主要使用R中的OOP概念。一个例子是有用的,或者一个很好的教程解释
答案 0 :(得分:1)
除了http://adv-r.had.co.nz/OO-essentials.html,它提供了基础和推荐包中的R对象,你还有 R6 ,这与你在Matlab中所做的更接近。您的示例翻译如下:
<PropertyGroup>
<SHFBROOT Condition=" '$(SHFBROOT)' == '' ">$(MSBuildThisFileDirectory)..\packages\EWSoftware.SHFB.2015.10.10.0\Tools\</SHFBROOT>
</PropertyGroup>
看看# Need to install R6 first:
# install.packages("R6")
library(R6)
windTurbine <- R6Class("windTurbine",
public = list(
# Properties (fields)
NumOfBlades = integer(0),
blade = NULL, # Which kind of object is it?
sweptArea = numeric(0),
# Methods
initialize = function(NumOfBlades, blade) {
self$NumOfBlades <- as.integer(NumOfBlades)
self$blade <- blade
self$sweptArea <- self$CalcSweptArea()
},
CalcSweptArea = function() {
# < your code here>
# (Return a fake value, just for testing)
return(10)
}
))
wt <- windTurbine$new(NumOfBlades = 6, blade = 3)
wt$sweptArea
。私有字段或方法也有?R6Class()
参数。