R中计算data.table指定列与V18的相关系数并生成结果表
解决方案
首先确保你已经加载了data.table包:
library(data.table)
方法1:修正你的for循环写法
你原来的代码存在三个核心问题:
- 循环内每次覆盖结果表,且提前
return导致仅执行一次循环 - data.table通过数字索引取列的写法有误
- 变量名提取时用了完整的列索引向量,和单次计算的相关系数长度不匹配
修正后代码如下:
# 定义需要计算的列索引 target_cols <- c(1,6,7,9,10,11) # 初始化空结果表 cor_result <- data.table(Variable = character(), Correlation_to_V18 = numeric()) for (col_idx in target_cols) { # 提取当前变量名 cur_var <- colnames(data)[col_idx] # 计算相关系数,用[[索引直接取列向量更稳妥 cur_cor <- cor(data[[18]], data[[col_idx]]) # 追加结果到表中 cor_result <- rbind(cor_result, data.table(Variable = cur_var, Correlation_to_V18 = cur_cor)) } # 查看最终结果 print(cor_result)
方法2:更高效的向量化写法(无需循环,符合data.table风格)
target_cols <- c(1,6,7,9,10,11) cor_result <- data.table( Variable = colnames(data)[target_cols], Correlation_to_V18 = sapply(data[, .SD, .SDcols = target_cols], function(x) cor(x, data[[18]])) )
两种方法输出的结果都完全符合你需要的格式。
内容的提问来源于stack exchange,提问作者AaronSzcz
相关产品推荐
相关产品推荐

