我是RI的新用户已使用下面的代码导入了我所有txt文件中的所有数据,但我想在导入数据时创建一个新变量,该变量称为case。案例的值为第一行是1,其余的是0.
当我尝试运行代码时,控制台没有说任何时候出错,数据已导入,但新变量未创建。我不知道为什么。
for(i in Filenames){
perpos <- which(strsplit(i, "")[[1]]==".")
data=assign(
gsub(" ","",substr(i, 1, perpos-1)),
read.table(paste(filepath,i,sep=""),fill=TRUE,header=TRUE,quote ="",row.names = NULL,sep="\t")
)
strsplit(i, "")
filename = strsplit(as.character(i),"\\.txt")
data$case = ifelse(data$NAME=="filename",1,0)
}
答案 0 :(得分:1)
谢谢你们!我使用了@ joosts的代码并做了一些调整。下面的代码工作正常。
fn <- paste(filepath,Filenames,sep="")
mylist <- lapply(fn, read.table,fill = TRUE, header = TRUE, quote = "",row.names = NULL, sep = "\t",stringsAsFactors=FALSE)
for(i in 1:length(Filenames)){
mylist[[i]]<- cbind(mylist[[i]], case = 0)
if(nrow(mylist[[i]])>0) {
mylist[[i]]$case[1] <- 1
}
mylist[[i]]<- cbind(mylist[[i]], ID = i)
}
do.call(rbind, mylist)
答案 1 :(得分:0)
我假设您要读取多个文本文件,每个文件包含相同的列(按相同顺序)。为了组合多个dataframe
s(调用read.data()
产生的结果),您应该调用函数rbind()
。
我假设您的代码获取没有扩展名的文件名略微过于复杂......
for(file in filenames) {
sanitized_filename <- gsub(" ", "", strsplit(file, "\\.")[[1]][1])
file.frame <- read.table(paste(filepath, file, sep=""), fill = TRUE, header = TRUE, quote = "", row.names = NULL, sep = "\t")
file.frame <- cbind(file.frame, name = I(sanitized_filename), case = 0)
if(nrow(file.frame)>0) {
file.frame$case[1] <- 1
}
data <- ifelse(exists("data"), rbind(data, file.frame), file.frame)
}