我想在R中定义一个函数,在该函数中传递文件,读取并将信息保存在列中的Dada Framen中。 文件可以是CSV,TXT或xls / xlsx;在CSV和theTXT的情况下,信息可以用“,”,“;”,行或空格的跳跃来分隔。其中一个文件的内容的一些示例将是以下一个:
1234567890; 1234567890; 1234567890; 1234567890;
Example:
1234567890, 1234567890, 1234567890, 1234567890
Another example:
1234567890 1234567890 1234567890 1234567890;
Another example:
1234567890
1234567890
1234567890
这个想法是该函数正在检测文件的类型,字段如何分离以及它正在处理信息以便将dataFrame中的字段保持为以下字段:
标签
1234567890
1234567890
1234567890
我已经定义了一个函数来处理问题的一部分,并且能够检测它正在发生的文件类型,如果它是xls或xlsx则处理它,但我不清楚如何处理部分目标到txt或csv类型的文件,它们可以有不同类型的分色。
这是我的功能:
READ_TAGS_LIST<-function(TAGS_LIST_file){
extension<-tools::file_ext(TAGS_LIST_file)
if(extension=="txt"){
}
if(extension=="csv"){
}
if(extension=="xls"){
require(xlsx)
DF_TAGS_LIST =read.xlsx(TAGS_LIST_file, 1)
DF_TAGS_LIST<-as.data.frame(DF_TAGS_LIST)
names(DF_TAGS_LIST)[1]<-("TAGS_IDE")
return(DF_TAGS_LIST)
}
if(extension=="xlsx"){
require(xlsx)
DF_TAGS_LIST =read.xlsx(TAGS_LIST_file, 1)
DF_TAGS_LIST<-as.data.frame(DF_TAGS_LIST)
names(DF_TAGS_LIST)[1]<-("TAGS_IDE")
return(DF_TAGS_LIST)
}
}
答案 0 :(得分:0)
从fread
包中尝试data.table
,默认sep="auto"
选项会自动检测分隔符。
if(extension=="txt" | extension=="csv"){
...
DF_TAGS_LIST =fread(TAGS_LIST_file)
...
}
<强>更新强>
假设文件结构如此,它也适用于空格分隔文件
a;b;c;d
1234567890;1234567890;1234567890;1234567890
您可以使用t()
进行转置,因为您需要一列中的数据
if(extension=="txt" | extension=="csv"){
...
DF_TAGS_LIST =as.data.frame(t(fread(TAGS_LIST_file)),row.names=FALSE)
...
}
<强>输出:强>
as.data.frame(t(fread("sample_fread.dat",header="auto")),row.names=FALSE)
V1
1 1234567890
2 1234567890
3 1234567890
4 1234567890