我有一个大矩阵(3600行)和1列(字符)称为数据,我想在每次出现“Neue Zeitung”时拆分矩阵。我尝试过存储索引然后进行拆分的事情。但它不起作用
index.mat <- c()
for (i in 1:nrow(data)) {
if (substr(data[i,1],1,12)=="Neue Zeitung")==T) {
index.temp <- i
}
index.mat <- rbind(index.mat,index.temp)
}
然后使用拆分功能,但这是最好的方法吗?
有人可以帮忙吗?
答案 0 :(得分:2)
您可能不需要显式循环。相反,您可以使用cumsum
和split
。
split(dat, cumsum(dat[,1] == "Neue Zeitung"))
split(dat, cumsum(grepl("Neue Zeitung", dat[,1])))
split(dat, cumsum(substr(dat[,1], 1, 12) == "Neue Zeitung"))
或
split(dat, cumsum(grepl("^Neue Zeitung.*", dat[,1])))
答案 1 :(得分:1)
grepl
功能可能更适合:
index.mat <- which(grepl("Neue Zeitung", data[,1]))