我想要创建一个脚本,在txt文件中读取并在特定的点拆分它。文本文件如下所示:
>>PARAM:EDGER
a 10
b 10
c 30
>>PARAM:GSEA
d 10
e 10
f 30
>>PARAM:GO
g 2
h 3
>>PARAM:KEGG
i 9
j 20这些值是以制表符分隔的。
我用data <- read.table("config_2_R.txt",header=FALSE, sep="\t",fill = TRUE)在文件中读到
我想在>>PARAM:.例如:
df1
v1 v2
a 10
b 10
c 30
df2
v1 v2
d 10
e 10
f 30
df3
v1 v2
g 2
h 3
df4
v1 v2
i 9
j 20我怎么能做到呢?谢谢!
发布于 2022-11-14 14:57:42
您可以同时读取所有数据,然后找到">>“模式来分割数据,然后将每个块作为data.frame读取。例如
lines <- readLines("config_2_R.txt")
dfs <- lapply(split(lines, cumsum(grepl(">>", lines))), function(x) {
read.table(text=x[-(1:2)])
})这将返回一个data.frames列表,它通常比全局环境中的许多不同变量更容易处理。但是如果你真的需要不同的变量,你可以用
list2env(setNames(dfs, paste0("df", seq_along(dfs))), env=globalenv())或者,如果您希望将它们全部读入一个data.frame中,但添加一个列以指示PARAM: value是什么,则可以这样做
lines <- readLines("config_2_R.txt")
dfs <- lapply(split(lines, cumsum(grepl(">>", lines))), function(x) {
source <- gsub(">>PARAM:","", x[1])
cbind(read.table(text=x[-(1:2)]), source)
})
do.call("rbind", dfs)https://stackoverflow.com/questions/74433506
复制相似问题