You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将R中by函数的输出转为列表/向量并添加至数据框?

es_test$sn_id: 2
[1] 0.3864762

该格式不便于后续处理,我希望将结果转为类似`[0.157, 0.386]`的列表或向量。尝试使用`c()`转换后得到带名称的double类型:
```r
Browse[6]> result_pv
        1         2 
0.1572992 0.3864762 

> typeof(result_pv)
[1] "double"

这种类型无法直接添加到数据框中,请问如何解决?

解决方案

方法1:去除向量名称

使用unname()函数剥离向量的名称属性,得到普通数值向量,即可直接添加到数据框:

result_pv_unname <- unname(result_pv)
# 输出:[1] 0.1572992 0.3864762

示例用法:

# 提取唯一的sn_id并匹配p值
result_df <- data.frame(
  sn_id = unique(es_test$sn_id),
  p_value = result_pv_unname
)

方法2:用dplyr直接生成结构化结果(推荐)

改用dplyr的分组计算逻辑,一步到位得到包含分组ID和对应p值的数据框,无需后续转换:

library(dplyr)

result_df <- es_test %>%
  group_by(sn_id) %>%
  summarize(p_value = catt(ï..is_severe, encoding), .groups = "drop")

输出结果直接是标准数据框,可直接用于后续分析。

方法3:将by的结果转为数据框

若坚持使用by函数,可将其输出转换为数据框:

# 转换by的结果为数据框
result_list <- by(es_test, es_test$sn_id, function(df) {
  data.frame(p_value = catt(df$ï..is_severe, df$encoding))
})
result_df <- do.call(rbind, result_list)
# 添加sn_id列并重置行名
result_df$sn_id <- rownames(result_df)
rownames(result_df) <- NULL
# 调整列顺序
result_df <- result_df[, c("sn_id", "p_value")]

内容的提问来源于stack exchange,提问作者Eliza Romanski

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 23:10:31