R 按列名将数据集拆分为多个

R 按列名将数据集拆分为多个,r,dplyr,grepl,R,Dplyr,Grepl,我正在尝试根据列名将数据集拆分为多个数据集: 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

我正在尝试根据列名将数据集拆分为多个数据集:

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=""))
} 
但这给了我另一个错误:

我做错了什么?如何解决这个问题?如有任何建议,将不胜感激

更新

我尝试将
exprs
数据集转换为
as.data.frame(t(exprs))%%>%…
,错误消失了,但过滤仍然不起作用:我每次迭代都得到零过滤结果。
exprs
数据集的外观如下所示:

示例之一
字符数组:


如果您的数据是21266x24185,则错误提示您可能需要使用
t()
转换表达式或样本以获得相同的方向

编辑: R在exprs头上附加了一个X,这样它们就不再匹配示例中的那个些了。读取exprs文件(例如,
read.csv()
)时,添加参数
check.names=F
,这将防止出现这种情况,但请谨慎使用,因为语法无效的标题可能会影响其他函数。有关更多信息,请参见
?make.name

如果这仍然不能解决问题,请确认expr中的某些头确实与示例匹配,以便我们期望输出


如果您提供的示例中包含的匹配数据的格式可以复制到R(文本,而不是图像),如果这不能解决问题,我们可能会提供进一步的帮助。

是的,但筛选仍然无法按照我的代码中实现的方式工作。您可以发布一个小的dadaset示例吗?足以重现错误的东西。最好使用
dput(samples)
或如果
samples
太大
dput(head(samples,20))
。请提供实际数据集。否则,你会被否决。
is.in <- grepl(paste(colnames(exprs), collapse="|"), samples)
exprs_filtered <- exprs[, is.in]