我正在尝试在 R 中创建各种距离/关联函数的矩阵。我有一个类似于 cor 的函数,它给出了两个向量之间的关联。现在我想获取一个数值向量的数据框(或矩阵),比如 mtcars ,并从函数和数据框创建一个矩阵。我认为这就是 outer 的用途,但我没有让它工作。这是使用 cor 和 mtcars 的尝试。

cor(mtcars$mpg, mtcars$cyl)  #a function that gives an association between two vectors
outer(mtcars, mtcars, "cor") #the attempt to create a matrix of all vectors in a df

是的,我知道 cor 可以直接做到这一点,让我们假装它不能。 cor 只是找到两个向量之间的相关性。

所以最终目标是得到你从 cor(mtcars) 得到的矩阵。

先感谢您。

最佳答案

您可以将 outer 与以列名或列号作为参数的函数一起使用。

outer(
  names(mtcars),
  names(mtcars),
  Vectorize(function(i,j) cor(mtcars[,i],mtcars[,j]))
)

关于r - 从一个函数和两个数字数据框创建一个矩阵,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9917242/

10-12 18:08