如何在矢量和数据帧的每一列之间应用自定义函数



我想计算两个数据帧之间的比例phi,将第一个数据帧的一列与第二个数据帧中的每一列进行比较。我只是使用矩阵作为示例代码。

mat.1<-matrix(rnorm(30),nrow = 10,ncol = 3)
colnames(mat.1)<-c("A","B","C")
mat.2<-matrix(rnorm(30),nrow = 10,ncol = 3)
colnames(mat.2)<-c("V1","V2","V3")
custom.correlation<-function(x,y){
cor(x,y)
}

我想找到一种方法来计算相关性,比如:

cust.corr(A,V1)
cust.corr(A,V2)
cust.corr(A,V3)
cust.corr(B,V1)

等等。等等,而不使用环路。

我的自定义函数更复杂,直接将2个数据帧作为输入。感谢

你可以做:

name_df <- expand.grid(colnames(mat.1), colnames(mat.2))
f <- function(i) custom.correlation(mat.1[,i[1]], mat.2[,i[2]])
name_df$cor <- apply(name_df, 1, f)
name_df
#>   Var1 Var2         cor
#> 1    A   V1  0.43061855
#> 2    B   V1 -0.24786963
#> 3    C   V1 -0.44468358
#> 4    A   V2 -0.10678237
#> 5    B   V2  0.51727866
#> 6    C   V2  0.39317290
#> 7    A   V3 -0.31834670
#> 8    B   V3 -0.08776827
#> 9    C   V3 -0.19823759

最新更新