我是R的新手,主要使用其他人编写的旧代码。我正在尝试创建自己的R函数。
我发现以下一些代码用于特征值分解。
eigenMatrix = eigen(myMatrix)[[2]]
eigenVals = eigen(myMatrix)[[1]]
这里有单个函数可以输出2个不同的数据结构,即矢量和矩阵,取决于括号中的值。
当我搜索具有多个输出的函数时,它们通常使用列表一次输出多个变量,这些变量不起作用,可能是因为类型不同。
我不明白为什么有两个方括号以及基础功能如何起作用。
答案 0 :(得分:0)
发布的代码采用特征函数,返回一个包含2个值的列表。 然后[[]]用于从列表中提取第一个和第二个项目。 返回底层结构需要[[]],这里有更好的解释: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或此处:How to assign from a function with multiple outputs?
列表值可以包含任何结构,[[]]可用于返回每个值的基础结构。