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

R中循环命令未按正确输入数量运行的问题解决

问题分析与代码修正

你的核心问题是在调用extract_outcome_data时,错误地传入了所有数据框的第4列集合,而非当前处理的单个数据框的第4列,导致函数只读取了列表的前10个元素(正好对应10个数据框的数量),而非单个数据框的全部SNP行。

修改后的代码

library(TwoSampleMR)
library(tidyr)

# 读取文件,若你的数据有表头,务必添加header=TRUE
my_files <- list.files(pattern = "*_gws.txt")
my_data <- lapply(my_files, function(file) read.table(file, header = TRUE))

# 循环处理每个数据框,提取当前数据框第4列的全部SNP
model <- lapply(my_data, function(x){
  extract_outcome_data(
    snps = x[[4]], 
    outcomes = c('outcome1','outcome2','outcome2')
  )
})

关键修改点

  • 替换snps参数:将lapply(my_data, "[[",4)改为x[[4]],x代表当前循环迭代的单个数据框,x[[4]]会取出该数据框第4列的所有行(即该文件的全部SNP),而非所有文件的第4列集合。
  • 推荐添加header=TRUE:如果你的*_gws.txt文件包含表头,这个参数能确保列索引正确,避免把表头误判为数据行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 07:00:59