我想在read.table
循环中使用for
,并对每个数据进行一次分析,并将结果写入矩阵。文件名具有以下模式AA.BB.CC.P1.DD
,AA.BB.CC.P2.DD
等
我试过了:
for(i in 1:8) {
assign( paste("AA.BB.CC.P", i, sep="")
data <- read.table(paste(i, "DD", sep="."))
a <- data$V7
b <- data$V12
c <- data$V13
d <- data$V15
function(a,b,c,d)
}
我收到此错误:
Error in file(file, "rt") : cannot open the connection
In addition: Warning message:
In file(file, "rt") : cannot open file '1.DD': No such file or directory
答案 0 :(得分:2)
这对你有用吗? (我不确定你对function(a,b,c,d)
)
for(i in 1:8) {
data <- read.table(paste0("AA.BB.CC.P",i,".", "DD"))
a <- data$V7
b <- data$V12
c <- data$V13
d <- data$V15
function(a,b,c,d)
}
答案 1 :(得分:1)
for(i in 1:8) {
data <- read.table(paste("AA.BB.CC.P",i,".DD"))
a <- data$V7
b <- data$V12
c <- data$V13
d <- data$V15
function(a,b,c,d)
}
代码中的问题是
data <- read.table(paste(i, "DD", sep="."))
数据来源只是&#34; i.DD&#34;而不是&#34; AA.BB.CC.P.i,DD&#34; ...您应该定义要读取的文件格式吗?例如.csv 如果仍有此问题,请检查文件的路径和实际工作目录 (使用此:&#34; getwd()&#34;检查你的实际wd)
答案 2 :(得分:1)
你的代码是胡言乱语。不要在这里使用for
循环。最简单的方法是将所有文件放在一个目录中,然后执行以下操作:
ff <- list.files(path="<add your dir path here>", full.names=TRUE)
#use the pattern argument, if you have files in the directory,
# which you don't want to read in
myfilelist <- lapply(ff, read.table)
names(myfilelist) <- list.files(path="<add your dir path here>", full.names=FALSE)
这为您提供了一个包含data.frames的精美列表,与工作区中的大量对象相比,它更容易使用。
答案 3 :(得分:1)
这个答案建立在罗兰的答案之上。
要迭代文件中的项目并将其读入表格,您可以使用Roland的代码。他将read.table函数传递给lapply。
问题是您无法将非默认参数传递给read.table函数。
下面的代码创建了一个设置header = False和sep =','的函数,但您可以更改它并个性化您自己的函数(这解决了user2162153的问题)。
#Building up on Roland's answer, you can pass a personalized reader function. First define your function and than use his codes.
Personalized_Reader <- function(lambda){
read.table(lambda, header = FALSE ,sep = ',')}
# Personalize your arguments on the read.table function
ff <- list.files(path="<add your dir path here>", full.names=TRUE)
#use the pattern argument, if you have files in the directory, which you don't want to read in
myfilelist <- lapply(ff, Personalized_Reader)
names(myfilelist) <- list.files(path="<add your dir path here>", full.names=FALSE)
`