所以我有两个向量(它们实际上是我的数据在另一个R对象中占据的起始行和结束行)
start=c(13,103,202,250)
end=c(102,201,249,300)
我正在尝试创建一个循环,我可以使用dataset_{#number}=read.table(text=data[start:end],sep=",",header=F)
n=1
for (i in start){
dataset_{n}=read.table(text=data[i:end[n]],sep=",",header=F)
n=n+1
}
期望的输出:
dataset_1
dataset_2
dataset_3
..
如何告诉循环创建一个全新的数据集来保存每个连续的块?我怎么告诉R {n}不是字符串而是循环的一部分?
答案 0 :(得分:1)
尝试assign
:
for (i in 1:length(start))
assign(paste0("dataset_", i), read.table(text=data[start[i]:end[i]], sep=",", header=F))
回答您的评论:
要合并这些数据集,请使用(a。)list
方法(如果您还需要单独的帧):
# 1st, create list
datasets <- mapply(function(from, to) read.table(text=data[from:to],
sep=",",
header=F),
start,
end,
SIMPLIFY=FALSE)
# 2nd, combine elements into one data frame
dataset <- do.call(rbind, datasets)
或(b。)直接组合循环中的数据框(如果您只需要最终的组合数据框):
dataset <- data.frame()
for (i in 1:length(start))
dataset <- rbind(dataset, read.table(text=data[start[i]:end[i]],
sep=",",
header=F))