我的数据框如下:
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)])))})
答案 0 :(得分:1)
apply(df, 2, cor, y=1:nrow(df),use="complete.obs")
这是一种更优雅的功能编码方式。它也可能对你更好。