首页 > 解决方案 > R访问引用类对象列表中的字段值

问题描述

希望我能理解这一点。我是 R 的新手。我正在尝试转移一些 Python 库并尝试将我的头脑围绕 R 类。

我有以下参考类:

curve <- setRefClass("curve",
                     fields = list(
                       runID="character", 
                       x="numeric", 
                       y="numeric"
                     ), 
                     methods = list(
                       mean = function(a, b){
                         (a + b)/2
                       },
                       calculateYCrossover = function(leftBound, rightBound, target, upDown){
                         i <- 0
                         for (xPoint in x){
                           i<-i+1
                           if (xPoint >= leftBound & xPoint <= rightBound){
                             if (upDown == "up"){
                               if (y[i] >= target & y[i-1] < target){
                                 xCoord <- xPoint
                                 yCoord <- y[i]
                                 result <- 1
                               }
                             }
                             if (upDown == "down"){
                               if (y[i] <= target & y[i-1] > target){
                                 xCoord <- xPoint
                                 yCoord <- y[i]
                                 result <- 1
                               }
                             }
                           }
                         } 
                         return(xCoord)
                       }
                       
                     )
                    )

所以我正在创建一个文件目录中所有曲线的列表。我打开一个目录,并为目录中的每个文件创建一个新曲线对象,分配字段值,然后将该新曲线对象附加到我的曲线列表中。

nm <- list.files(path="C:/Users/C176616/OneDrive - Eli Lilly and Company/PAM R/PAM R/data")

setwd("./data")

curves <- c()

for (filen in nm){
  mCurve <- curve$new()
  rawCurve <- read_csv(filen, na = "empty", skip = 278)
  mCurve$runID <- filen
  mCurve$x <- head(rawCurve$mm, -1)
  mCurve$y <- head(rawCurve$N, -1)
  curves <- append(curves, mCurve)
}

在环境资源管理器中,一切看起来都是正确的。我可以看到我的列表,并且我可以看到每个曲线对象的字段 runID、x 和 y 都填充了正确的数据。

如何访问单个曲线的字段值?

curve[1]$runID返回 NULL。

但如果我打印curve[1],我可以看到一个具有 3 个字段的引用类“曲线”的对象 ..$ runID:

关于为什么每个字段会返回 NULL 的任何想法?

谢谢!

标签: r

解决方案


推荐阅读