R. Run lm function over list of many dataframes in directory. Error: invalid 'envir' argument of type 'character'
R. Run lm function over list of many dataframes in directory. Error: invalid 'envir' argument of type 'character'
我有一个包含 1,200,000 个 .txt 文件(数据框)的目录。所有文件都具有相同的列名(ID SEX PV YPV APV GT N E Y M C A)。使用 R,我在这个目录中创建了一个包含所有元素的列表:
library("plyr")
library("dplyr")
library("broom")
library("tidyr")
snp_list <- list.files(pattern=".txt", all.files = T,full.names = F)
我想对列表中的每个元素应用一个函数:
pv1= lapply(snp_list, function(x) tidy(lm(PV ~ GT*SEX + M + GT*N,x)))
但是,我得到这个错误:
Error in eval(predvars, data, env) :
invalid 'envir' argument of type 'character'
9.eval(predvars, data, env)
8.model.frame.default(formula = PV ~ GT * SEX + M + GT * N, data = x, drop.unused.levels = TRUE)
7.stats::model.frame(formula = PV ~ GT * SEX + M + GT * N, data = x, drop.unused.levels = TRUE)
6.eval(mf, parent.frame())
5.eval(mf, parent.frame())
4.lm(PV ~ GT * SEX + M + GT * N, x)
3.tidy(lm(PV ~ GT * SEX + M + GT * N, x))
2.FUN(X[[i]], ...)
1.lapply(snp_list, function(x) tidy(lm(PV ~ GT * SEX + M + GT * N, x)))
请帮忙!
snp_list
只是文件名的向量,你需要读取数据。
library(broom)
pv1= lapply(snp_list, function(x) tidy(lm(PV ~ GT*SEX + M + GT*N,read.table(x))))
您可能需要根据您的数据向 read.table
添加其他参数。
我有一个包含 1,200,000 个 .txt 文件(数据框)的目录。所有文件都具有相同的列名(ID SEX PV YPV APV GT N E Y M C A)。使用 R,我在这个目录中创建了一个包含所有元素的列表:
library("plyr")
library("dplyr")
library("broom")
library("tidyr")
snp_list <- list.files(pattern=".txt", all.files = T,full.names = F)
我想对列表中的每个元素应用一个函数:
pv1= lapply(snp_list, function(x) tidy(lm(PV ~ GT*SEX + M + GT*N,x)))
但是,我得到这个错误:
Error in eval(predvars, data, env) :
invalid 'envir' argument of type 'character'
9.eval(predvars, data, env)
8.model.frame.default(formula = PV ~ GT * SEX + M + GT * N, data = x, drop.unused.levels = TRUE)
7.stats::model.frame(formula = PV ~ GT * SEX + M + GT * N, data = x, drop.unused.levels = TRUE)
6.eval(mf, parent.frame())
5.eval(mf, parent.frame())
4.lm(PV ~ GT * SEX + M + GT * N, x)
3.tidy(lm(PV ~ GT * SEX + M + GT * N, x))
2.FUN(X[[i]], ...)
1.lapply(snp_list, function(x) tidy(lm(PV ~ GT * SEX + M + GT * N, x)))
请帮忙!
snp_list
只是文件名的向量,你需要读取数据。
library(broom)
pv1= lapply(snp_list, function(x) tidy(lm(PV ~ GT*SEX + M + GT*N,read.table(x))))
您可能需要根据您的数据向 read.table
添加其他参数。