如何在R编程中向列表添加对象?

我已经创建了一个函数,用于生成一个图(贝叶斯网络)和两组边列表。我希望将图和两个边列表放入一个最终列表中,以便返回(因此返回的总是包含三个对象的列表)。我已经阅读了无数关于列表追加函数的Stack页面,但仍然会遇到某种错误,提示“x必须是’bn’类的对象”。也许我没有正确地将图和列表添加到我的最终列表中?我希望你们能帮我解决这个问题。以下是我的代码。

另外,如果我想清空一个包含某些对象的列表,使用exampleList <- NULL可以达到效果吗?

    startOfMethod(G_0, dataX)        {           n = 0           graphQueue = G_0           FINAL_LOCKED_NODES_ARRAY_REVERSED = list()           FINAL_LOCKED_NODES_ARRAY_NON_REVERSED_CANDIDATES = list()           graph_lock_andEdges_Array = list()           While(n < 1000)           {             ... 构建图G_1的代码                if(score(G_1,dataX,type="aic") <= score(graphQueue,dataX, type ="aic")){                  graphQueue = G_1                  FINAL_LOCKED_NODES_ARRAY_REVERSED = temp_Lock_Nodes_Array_Reversed                  FINAL_LOCKED_NODES_ARRAY_NON_REVERSED_CANDIDATES = temp_Lock_Nodes_Array_NonReversed_Candidates                  print("FINAL_LOCKED_NODES_ARRAY_REVERSED")                  print(FINAL_LOCKED_NODES_ARRAY_REVERSED)                  print("Break 4")                }                n = n + 1           }          graph_lock_andEdges_Array = c(graph_lock_andEdges_Array, list(graphQueue))          graph_lock_andEdges_Array = c(graph_lock_andEdges_Array, list(FINAL_LOCKED_NODES_ARRAY_REVERSED))          graph_lock_andEdges_Array = c(graph_lock_andEdges_Array, list(FINAL_LOCKED_NODES_ARRAY_NON_REVERSED_CANDIDATES))          return(graph_lock_andEdges_Array)    }

回答:

如果返回的列表应该包含三个对象,我们可以直接将它们放入结果列表中。

graph_lock_andEdges_Array <- list(graphQueue, FINAL_LOCKED_NODES_ARRAY_REVERSED, FINAL_LOCKED_NODES_ARRAY_NON_REVERSED_CANDIDATES)

要访问列表中的单个元素,请使用双重方括号。我将在一些示例数据上进行演示。

graphQueue <- matrix(1:4, ncol=2)FINAL_LOCKED_NODES_ARRAY_REVERSED <- list(matrix(5:8, ncol=2))FINAL_LOCKED_NODES_ARRAY_NON_REVERSED_CANDIDATES <- list(matrix(9:12, ncol=2))graph_lock_andEdges_Array <- list(graphQueue, FINAL_LOCKED_NODES_ARRAY_REVERSED, FINAL_LOCKED_NODES_ARRAY_NON_REVERSED_CANDIDATES)# 显示第一个列表元素print(graph_lock_andEdges_Array[[1]])# 显示第二行第一个单元格print(graph_lock_andEdges_Array[[1]][2,1])

请注意,第二个和第三个元素是列表中的列表。要显示第二个列表元素中第二行第一个单元格,我们使用:

print(graph_lock_andEdges_Array[[2]][[1]][2,1])

回答第二个问题,是的,<- NULL将清除对象的内容。

str(graph_lock_andEdges_Array)List of 3 $ : int [1:2, 1:2] 1 2 3 4 $ :List of 1  ..$ : int [1:2, 1:2] 5 6 7 8 $ :List of 1  ..$ : int [1:2, 1:2] 9 10 11 12graph_lock_andEdges_Array <- NULLstr(graph_lock_andEdges_Array) NULL

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注