{library(Seurat)
library(tidyverse)
library(purrr)}
dirNames <- unique(dirname(list.files("data/scRNA_CITE",
full.names = T,
recursive = T)))
######
#reading multiple directories and a resultant list
dat <- purrr::map(dirNames, Read10X)
names(dat) <- dirNames
#reading just one file
#M06 <- Read10X(data.dir = "data/m06/filtered_feature_bc_matrix/")
#renaming the rows of a list element (here named antibody capture) within one list works!
rownames(x = M06[["Antibody Capture"]]) <- gsub(pattern = "*_TotalSeqC", replacement = "",
x = rownames(x = M06[["Antibody Capture"]]))
#creating function for purrr
change_rname <- function(x){
rownames(x[["Antibody Capture"]]) <- sub(pattern = "*_TotalSeqC", replacement = "", x[["Antibody Capture"]])
}
# using the same function to rename multiple elements within multiple lists of a bigger list works temporarily BUT DOES not get saved within the bigger list
purrr::map(dat,
~change_rname(.x))
I am not sure how to make a reprex for this, to allow for the files to be loaded. How to make the function work with purrr and allow for within list element renaming?
Created on 2020-12-01 by the reprex package (v0.3.0)
Return the changed dataframe from the function.
change_rname <- function(x){
rownames(x[["Antibody Capture"]]) <- sub(pattern = "*_TotalSeqC",
replacement = "", x[["Antibody Capture"]])
return(x)
}
#apply function with `purrr:map`
result <- purrr::map(dat,change_rname)