如何在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

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

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