在R中将循环元素馈入字符串对象

时间:2013-12-30 02:25:46

标签: r

所以我有两个向量(它们实际上是我的数据在另一个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}不是字符串而是循环的一部分?

1 个答案:

答案 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))