如何将向量中的每个元素更改为参考类?

时间:2019-03-21 12:42:12

标签: r

我试图将字符串向量中的每个对象都转换为引用类。假设我的参考班是:

myrefclass <- function(str) {
  methods <- list()

  methods$cnt <- function() {
    return(str_length(str))
  }

  methods
}

我尝试转换以下向量(尽管没有成功):

v1 <- c("ABC", "D", "FGHI")
v2 <- c(ABC="ABC", D="D", FGHI="FGHI")

然后我尝试将引用类应用于向量的每个元素:

res1 <- sapply(v1, myrefclass)
res2 <- sapply(v2, myrefclass)

然后我认为我可以按以下方式使用它(,但遗憾的是它不起作用):

> res1["ABC"]$cnt
NULL
> res2["ABC"]$cnt
NULL

如何创建引用类的向量并访问其方法?

  

注意#1:我更喜欢base-R解决方案,但是   看看哪些软件包可能有帮助

     

注意#2:我正在寻找一种动态解决方案。为了说明这一点,   假设此问题的扩展将使用res1res2   查找所有具有$cnt=3的字符串。因此,访问字符串   res1$ABC$cnt中的内容将无法正常运行,因为您不知道ABC在   v1v2(以您认为合适为准)。

1 个答案:

答案 0 :(得分:0)

找出答案。我的问题是我不应该创建引用类的向量,因为它似乎弄乱了我的对象及其对应的方法,我应该创建了一个列表:

  DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
                DocumentBuilder docBuilder = docFactory.newDocumentBuilder();

                // root elements
                Document doc = docBuilder.newDocument();

然后要查找特定字符串的长度:

v2 <- list(ABC="ABC", D="D", FGHI="FGHI")
res2 <- lapply(v2, myrefclass)

Voila!

相关问题