我如何从R语言中调用类,ClassA和ClassB在不同的文件中

时间:2013-06-11 14:43:14

标签: r

我是R语言的新手,所以我认为我应该像Java那样说明这个要求 现在我们知道R可以支持OOP,所以我想从ClassA调用ClassB方法

ClassB.java

public class ClassB {
    public void printB() {
       System.out.println("a");
    }
}

ClassA.java

//if they are in the same package, use it directly
//or we must import ClassB explicitly
public class ClassA {
    public void invokeB() {
       ClassB b = new ClassB();
       b.printB();
    }
}

那么如何用R语言实现这一目标呢?

1 个答案:

答案 0 :(得分:0)

这就是如何在方法调度的S3系统中完成类的分配。它不是真正的OOP,因为Java用户理解它。 proto包提供了一个更接近Java风格OOP的框架。方法调度的S4系统提供了多参数签名匹配和更加规范的方法......大多数R用户都无法理解。

 newItem <- "bbb"
class(newItem) <- "newClass"
print(newItem)
#[1] "bbb"
#attr(,"class")
#[1] "newClass"
 print.newClass <- function(n) cat("this is of the newClass", n)
 print(newItem)
#this is of the newClass bbb
 otherItem <- "xxxx"
 inherits(otherItem, "newClass")
#[1] FALSE

 class(otherItem) <- c( class(otherItem), "newClass")
 print(otherItem)
#this is of the newClass xxxx

当你谈论“课程”处于“不同档案”时,你可能需要研究包装结构以及NAMESPACE的护理和喂养。您可以附加包以及通过命名空间加载。 R函数可能有点类似于Java类(在英语中使用相当松散,但不是Java或R)但在R中,术语“类”指的是用于调度函数的对象的属性。