【发布时间】:2018-02-21 18:11:53
【问题描述】:
我正在尝试根据列名将数据集拆分为多个:
for(i in 1:nrow(column_vals)){
dataset_filtered <- dataset_metadata %>%
filter(characteristics..strain == column_vals[i,1],
characteristics..age == column_vals[i,2])
samples <- dataset_filtered[,1]
samples <- substr(samples, 1, 22)
exprs_filtered <- as.data.frame(exprs) %>% filter(colnames(exprs) %in%
samples)
saveRDS(exprs_filtered, paste0(path, i, sep=""))
}
samples 是一个 character 数组,其中包含需要在每次迭代中选择的不同列名。使用上面的代码我得到一个错误:
exprs 的维度为 21266x24185。我尝试使用grepl 函数:
is.in <- grepl(paste(colnames(exprs), collapse="|"), samples)
exprs_filtered <- exprs[, is.in]
但它给了我另一个错误:
我在这里做错了什么?如何解决问题?任何建议将不胜感激。
更新
我尝试转置 exprs 数据集:as.data.frame(t(exprs)) %>% ... 并且错误消失了,但过滤仍然不起作用:每次迭代我得到的过滤结果为零。 exprs 数据集如下所示:
samples 字符数组之一:
【问题讨论】:
-
你能发布一个小的dadaset例子吗?足以重现错误的东西。最好使用
dput(samples)或者如果samples太大dput(head(samples, 20))。 -
请提供一个实际的数据集。否则,你会被否决。