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]