使用lapply时不兼容的尺寸(cor(x,1:length(x))

时间:2016-11-16 16:09:26

标签: r correlation na

我的数据框如下:

a <- c(1,45,5,23,78,NA,NA)
b <- c(1,4,5,NA,NA,NA,NA)
c <- c(4,NA,NA,NA,NA,NA,NA)
d <- c(4,6,7,3,4,23,4)

df <- data.frame(a,b,c,d)

现在我想得到一个向量,其中每个向量的相关因子具有自己的长度省略NA

例如:cor(df$a[!is.na(df$a)], 1:length(df$a[!is.na(df$a)])),它返回(1,45,5,23,78)线性相关系数(1,2,3,4,5)

当我在一个列上应用上面编写的代码时,它可以工作。 但是,当我在lapply函数中包含该函数以获取所有列时,我得到“不兼容的维度”错误。我知道不兼容的尺寸误差表明不同的矢量尺寸是相关的。但是,当我将矢量与其长度本身相关联时,这怎么可能......?

result <- lapply(df, function(x){ o <-cor(x[!is.na(x)], 1:length(x[!is.na(x)]))})

我也试过,这也给我带来了同样的错误。

result <- lapply(df, function(x) {o <-cor(c(x[!is.na(x)]),c(1:length(x[!is.na(x)])))})

1 个答案:

答案 0 :(得分:1)

你尝试过试试:

apply(df, 2, cor, y=1:nrow(df),use="complete.obs")

这是一种更优雅的功能编码方式。它也可能对你更好。