r - R中的循环相关测试
问题描述
我想运行一个 for 循环来对我的数据框进行多个相关测试。我的数据框中也有 NA,所以我也想省略!
这是我的数据框的一部分。它更广泛,但其中的一小部分更容易理解。
name: carsdataframe
price mph maxmph model year status
1 NA 60 100 2013 1
2 NA 57 96 2019 0
3 5.2 52 NA 2017 1
我想做我目前拥有的:
for (i in c(1:4)){
colcor <- colnames(carsdataframe[i])
coresult <- cor.test(carsdataframe$colcor,carsdataframe$"status",use="pairwise.complete.obs")
finalcor <- c(coresult, colcor)
}
colcor
然而,这段代码不起作用,我看到“'x' 和 'y' 必须具有相同的长度”。我想知道如何为它编码。我应该修复什么?
抱歉,如果我犯了业余错误,我刚开始使用 R!提前谢谢你!:)
carsdataframe <- structure(list(price = c(NA, NA, 5.2), mph = c(60L, 57L, 52L),
maxmph = c(100L, 96L, NA), model_year = c(2013L, 2019L, 2017L
), status = c(1L, 0L, 1L)), class = "data.frame", row.names = c(NA,
-3L))
解决方案
当列名存储在变量中时,不要使用$
,使用[[
将列值提取为向量。您可以使用lapply
类似于for
循环的哪个。
list_data <- lapply(names(carsdataframe), function(x)
cor.test(carsdataframe[[x]],carsdataframe$status,use="pairwise.complete.obs"))
您可以使用sapply
/lapply
来提取特定的统计信息。例如 - 让p.value
你可以这样做:
sapply(list_data,`[[`, 'p.value')
#Or
#sapply(list_data,function(x) x$p.value)
要计算每个变量组合之间的相关性,您可以计算list_data
为:
list_data <- combn(names(carsdataframe), 2, function(x)
cor.test(carsdataframe[[x[1]]],
carsdataframe[[x[2]]],use="pairwise.complete.obs"), simplify = FALSE)
推荐阅读
- javascript - 使用 .equals 的 Dexie.js 查询不适用于 localStorage
- amazon-s3 - 使用和不使用 --dryrun 选项运行 s3 同步之间的时间差
- java - 带引用链的 JPA 复合主键
- css - 在使用滚动捕捉时实现页脚
- visual-studio-code - VScode自定义集成终端不显示输出中的所有路径
- javascript - 如何在 vuetify 的 v-combobox 中使用 no-data-text 道具?
- javascript - 麦克风在应用程序中被禁用/不工作(从网站转换)
- jquery - DataTables - 我不想一次加载所有数据?
- c# - C# 填充列表
使用来自另一个类的字符串和默认构造函数 - c# - AssemblyLoadContext 加载和卸载在不同的函数中得到不同的结果