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
相关产品推荐
相关产品推荐

