R - 请解释这段代码以及如何制作一个像它一样输出的函数?
R - Please explain this code and how to make a function that outputs like it?
我是 R 的新手,主要使用别人编写的旧代码。我正在尝试创建自己的 R 函数。
我发现了以下一些用于特征值分解的代码。
eigenMatrix = eigen(myMatrix)[[2]]
eigenVals = eigen(myMatrix)[[1]]
这里有一个函数可以输出 2 种不同的数据结构,即向量和矩阵,具体取决于括号中的值。
当我搜索具有多个输出的函数时,他们通常使用列表一次输出多个变量,这不起作用,可能是因为类型不同。
我不明白为什么会有两组括号以及底层函数是如何工作的。
发布的代码采用特征函数,return是一个包含 2 个值的列表。
然后 [[]] 用于从列表中提取第一项和第二项。
[[]] 是 return 底层结构所必需的,这里有更好的解释:How to Correctly Use Lists in R?
此外,由于本征函数是运行两倍,问题中的代码效率低下。
resultList = eigen(myMatrix)
eigenMatrix = resultList[[2]]
eigenVals = resultList[[1]]
这段代码更好,因为 eigen 只 运行 一次并将函数的结果保存为列表,然后从列表中读取值。
因为函数本身可以编码为具有多个输出的任何函数,例如此处:https://stat.ethz.ch/pipermail/r-help/2007-March/126851.html or here: How to assign from a function with multiple outputs?
列表值可以包含任何结构,并且 [[]] 可用于 return 每个值的基础结构。
我是 R 的新手,主要使用别人编写的旧代码。我正在尝试创建自己的 R 函数。
我发现了以下一些用于特征值分解的代码。
eigenMatrix = eigen(myMatrix)[[2]]
eigenVals = eigen(myMatrix)[[1]]
这里有一个函数可以输出 2 种不同的数据结构,即向量和矩阵,具体取决于括号中的值。
当我搜索具有多个输出的函数时,他们通常使用列表一次输出多个变量,这不起作用,可能是因为类型不同。
我不明白为什么会有两组括号以及底层函数是如何工作的。
发布的代码采用特征函数,return是一个包含 2 个值的列表。 然后 [[]] 用于从列表中提取第一项和第二项。 [[]] 是 return 底层结构所必需的,这里有更好的解释:How to Correctly Use Lists in R?
此外,由于本征函数是运行两倍,问题中的代码效率低下。
resultList = eigen(myMatrix)
eigenMatrix = resultList[[2]]
eigenVals = resultList[[1]]
这段代码更好,因为 eigen 只 运行 一次并将函数的结果保存为列表,然后从列表中读取值。
因为函数本身可以编码为具有多个输出的任何函数,例如此处:https://stat.ethz.ch/pipermail/r-help/2007-March/126851.html or here: How to assign from a function with multiple outputs?
列表值可以包含任何结构,并且 [[]] 可用于 return 每个值的基础结构。