当变量名称未知时,访问R6类变量?

时间:2017-07-31 16:41:58

标签: r class r6

这是一个简单的代码,它说明了我想要实现的目标:

require(R6)
cTest <- R6Class(
  "CTest", 
  public = list(
    a = 10, b=20, c=30,
    printX = function(x) {
      print(self[x])
    }
  )
) #"CTest"

myClass <- cTest$new(); 
for (x in c("a","b", "c"))
   myClass$printX("a")

它不起作用。错误讯息:

"Error in self[x] : object of type 'environment' is not subsettable"

为了进行比较,list / data.frames的类似任务有效:

for (x in c("mpg","cyl", "hp"))
   print(mtcars[x])

你能帮忙吗?

1 个答案:

答案 0 :(得分:1)

如果你使用双括号索引(即print(self[[x]])),这似乎工作正常。问题是通常单括号索引试图提取原始对象的子集;相反,双括号索引提取原始对象的元素。例如,如果L是数字列表,L[x]是子列表,而L[[x]]是数字。来自Hadley Wickham的推文:

enter image description here