我对 R 很陌生,如果编程看起来很糟糕,我很抱歉。
目标是基于公共前缀创建文件名,即给定前缀循环 x 次以生成前缀 1、前缀 2、前缀 3。然后使用这些文件名读取.csv(prefix-1,prefix-2,prefix-3)。
我已经让代码工作了,但效率很低:
name <- vector(mode="character", length=0)
for (i in 1:numruns)name[i] <- paste(prefix, "-", i, ".log", sep="")
if (numruns == 1) {
raw_data_1 <-read.csv(name[1], header=F, sep="\t", skip=11)
}
if (numruns == 2) {
raw_data_1 <-read.csv(name[1], header=F, sep="\t", skip=11)
raw_data_2 <-read.csv(name[2], header=F, sep="\t", skip=11)
}
if (numruns == 3) {
raw_data_1 <-read.csv(name[1], header=F, sep="\t", skip=11)
raw_data_2 <-read.csv(name[2], header=F, sep="\t", skip=11)
raw_data_3 <-read.csv(name[3], header=F, sep="\t", skip=11) #import files
}
我正在尝试学习如何提高效率,上述工作符合我的目的,但我觉得我应该能够将它包装在产生名称的初始循环中。当我尝试修改原始循环时,我无法让它工作......
for (i in 1:numruns){
name[i] <- paste(prefix, "-", i, ".log", sep="")
raw_data <- paste("raw_data_", i, sep="")
print(raw_data)
raw_data <- read.csv(name[i], header=F, sep="\t", skip=11)
}
而不是得到 raw_data_1,raw_data_2,raw_data_3... 我得到“raw_data”。我很困惑,因为 print(raw_data) 实际上正确打印了“raw_data_1-3”(但只有“raw_data”实际上包含任何信息)。
感谢您对我的代码的任何帮助或批评,以使其更高效。