r - 按类别对列表进行相关性检验
问题描述
(对不起,我不能发布图片,因为我没有声誉)
我有一个包含 21 个数据框的列表,我希望按分类组对其进行相关性测试。类别位于变量下,Station
对于 21 个数据帧是相同的。
请参阅下面单个数据框的小片段
下面是对单个数据帧进行相关性测试的代码,输出低于
func <- function(b21)
{
return(data.frame(COR = cor(b21$Origin, b21$Rainfall)))
}
a <- ddply(b21, .(Station), func)
我现在希望在列表的长度上这样做
func <- function(top30clean)
{
return(data.frame(COR = cor(x$Origin, x$Rainfall)))
}
a <- ddply(top30clean, .(Station), func)
当我尝试运行它时出现以下错误
Error in if (empty(.data)) return(.data) :
missing value where TRUE/FALSE needed
我必须申请吗?干杯传奇
解决方案
只需遍历list
withlapply
和 lambda 函数,使用相同的代码
library(plyr)
func <- function(data) {
return(data.frame(COR = cor(data$Origin, data$Rainfall)))
}
out <- lapply(top30clean, function(dat) ddply(dat, .(Station), func))
-输出
out[[1]]
Station COR
1 b1 -0.22839583
2 b10 -0.34085326
3 b2 0.55192520
4 b3 -0.19323719
5 b4 -0.87735044
6 b5 0.50342343
7 b6 -0.38747112
8 b7 0.13616484
9 b8 -0.30886631
10 b9 0.04089663
out[[3]]
Station COR
1 b1 -0.11467295
2 b10 0.38343956
3 b2 0.86669396
4 b3 -0.71142786
5 b4 0.50981405
6 b5 -0.15545226
7 b6 -0.03622854
8 b7 -0.51338336
9 b8 0.16221257
10 b9 0.58353028
数据
set.seed(24)
top30clean <- replicate(5, data.frame(Station = rep(paste0("b", 1:10), each = 5),
Rainfall = sample(0:100, 50, replace = TRUE),
Origin = sample(75:100, 50, replace = TRUE)), simplify = FALSE)
推荐阅读
- bash - Bash Date - 为什么添加秒数会增加小时数?
- discord.js - Discord bot 我将如何让 bot 检查服务器所有权
- javascript - React Native navigation.navigate 参数未更新
- r - 如何为 FizzBuzz 使用 R 的 S3 对象系统?
- graphene-python - 石墨烯:完整的功能性服务器是否需要中继?
- java - 为kie服务器配置kie智能路由器
- java - lambda表达式如何初始化参数?
- c++ - 为什么我不能从迭代器构造一个 std::span ?
- ios - 将 slowMo AVComposition 插入 AVMutableComposition
- java - Java 记录验证注解