R: How to index R objects within a for loop (Seurat)












0















I'm trying to use a for loop to simplify the following code:



a1 <- CreateSeuratObject (raw.data = a1.data)
a2 <- CreateSeuratObject (raw.data = a2.data)
a3 <- ...


I've tried the following:



samples <- c("a1", "a2", "a3")
samples.data <- c("a1.data", "a2.data", "a3.data")
for (i in samples) {
for (j in samples.data) {
i <- CreateSeuratObject(raw.data = j)
}
}


But it returns the following error:



Error in base::colSums(x, na.rm = na.rm, dims = dims, ...) : 
'x' must be an array of at least two dimensions


The CreateSeuratObject function essentially tries to read the samples.data vector instead of indexing the corresponding item in the vector. How can I fix this?










share|improve this question























  • This is a bad idea. 1) You are rewriting i every time through the inner loop on j. 2) You are trying to create n = length(samples) objects in the global environment. Instead you should keep the objects in a list.

    – Rui Barradas
    Nov 15 '18 at 7:04
















0















I'm trying to use a for loop to simplify the following code:



a1 <- CreateSeuratObject (raw.data = a1.data)
a2 <- CreateSeuratObject (raw.data = a2.data)
a3 <- ...


I've tried the following:



samples <- c("a1", "a2", "a3")
samples.data <- c("a1.data", "a2.data", "a3.data")
for (i in samples) {
for (j in samples.data) {
i <- CreateSeuratObject(raw.data = j)
}
}


But it returns the following error:



Error in base::colSums(x, na.rm = na.rm, dims = dims, ...) : 
'x' must be an array of at least two dimensions


The CreateSeuratObject function essentially tries to read the samples.data vector instead of indexing the corresponding item in the vector. How can I fix this?










share|improve this question























  • This is a bad idea. 1) You are rewriting i every time through the inner loop on j. 2) You are trying to create n = length(samples) objects in the global environment. Instead you should keep the objects in a list.

    – Rui Barradas
    Nov 15 '18 at 7:04














0












0








0








I'm trying to use a for loop to simplify the following code:



a1 <- CreateSeuratObject (raw.data = a1.data)
a2 <- CreateSeuratObject (raw.data = a2.data)
a3 <- ...


I've tried the following:



samples <- c("a1", "a2", "a3")
samples.data <- c("a1.data", "a2.data", "a3.data")
for (i in samples) {
for (j in samples.data) {
i <- CreateSeuratObject(raw.data = j)
}
}


But it returns the following error:



Error in base::colSums(x, na.rm = na.rm, dims = dims, ...) : 
'x' must be an array of at least two dimensions


The CreateSeuratObject function essentially tries to read the samples.data vector instead of indexing the corresponding item in the vector. How can I fix this?










share|improve this question














I'm trying to use a for loop to simplify the following code:



a1 <- CreateSeuratObject (raw.data = a1.data)
a2 <- CreateSeuratObject (raw.data = a2.data)
a3 <- ...


I've tried the following:



samples <- c("a1", "a2", "a3")
samples.data <- c("a1.data", "a2.data", "a3.data")
for (i in samples) {
for (j in samples.data) {
i <- CreateSeuratObject(raw.data = j)
}
}


But it returns the following error:



Error in base::colSums(x, na.rm = na.rm, dims = dims, ...) : 
'x' must be an array of at least two dimensions


The CreateSeuratObject function essentially tries to read the samples.data vector instead of indexing the corresponding item in the vector. How can I fix this?







r






share|improve this question













share|improve this question











share|improve this question




share|improve this question










asked Nov 15 '18 at 6:36









GLeeGLee

32




32













  • This is a bad idea. 1) You are rewriting i every time through the inner loop on j. 2) You are trying to create n = length(samples) objects in the global environment. Instead you should keep the objects in a list.

    – Rui Barradas
    Nov 15 '18 at 7:04



















  • This is a bad idea. 1) You are rewriting i every time through the inner loop on j. 2) You are trying to create n = length(samples) objects in the global environment. Instead you should keep the objects in a list.

    – Rui Barradas
    Nov 15 '18 at 7:04

















This is a bad idea. 1) You are rewriting i every time through the inner loop on j. 2) You are trying to create n = length(samples) objects in the global environment. Instead you should keep the objects in a list.

– Rui Barradas
Nov 15 '18 at 7:04





This is a bad idea. 1) You are rewriting i every time through the inner loop on j. 2) You are trying to create n = length(samples) objects in the global environment. Instead you should keep the objects in a list.

– Rui Barradas
Nov 15 '18 at 7:04












1 Answer
1






active

oldest

votes


















0














Here are three ways of doing what you want. I suggest you do not use the first way.



samples <- c("a1", "a2", "a3")
samples.data <- c("a1.data", "a2.data", "a3.data")

for (i in seq_along(samples)) {
assign(samples[i], CreateSeuratObject(raw.data = samples.data[i]))
}

samples_list <- vector("list", length = length(samples))
for (i in seq_along(samples)) {
samples_list[[i]] <- CreateSeuratObject(raw.data = samples.data[i]))
}
names(samples_list) <- samples

samples_list2 <- lapply(samples.data, CreateSeuratObject)
names(samples_list2) <- samples





share|improve this answer



















  • 1





    Thank you! I ended up going with lapply.

    – GLee
    Nov 15 '18 at 19:25











Your Answer






StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");

StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);

StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});

function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});


}
});














draft saved

draft discarded


















StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53313723%2fr-how-to-index-r-objects-within-a-for-loop-seurat%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown

























1 Answer
1






active

oldest

votes








1 Answer
1






active

oldest

votes









active

oldest

votes






active

oldest

votes









0














Here are three ways of doing what you want. I suggest you do not use the first way.



samples <- c("a1", "a2", "a3")
samples.data <- c("a1.data", "a2.data", "a3.data")

for (i in seq_along(samples)) {
assign(samples[i], CreateSeuratObject(raw.data = samples.data[i]))
}

samples_list <- vector("list", length = length(samples))
for (i in seq_along(samples)) {
samples_list[[i]] <- CreateSeuratObject(raw.data = samples.data[i]))
}
names(samples_list) <- samples

samples_list2 <- lapply(samples.data, CreateSeuratObject)
names(samples_list2) <- samples





share|improve this answer



















  • 1





    Thank you! I ended up going with lapply.

    – GLee
    Nov 15 '18 at 19:25
















0














Here are three ways of doing what you want. I suggest you do not use the first way.



samples <- c("a1", "a2", "a3")
samples.data <- c("a1.data", "a2.data", "a3.data")

for (i in seq_along(samples)) {
assign(samples[i], CreateSeuratObject(raw.data = samples.data[i]))
}

samples_list <- vector("list", length = length(samples))
for (i in seq_along(samples)) {
samples_list[[i]] <- CreateSeuratObject(raw.data = samples.data[i]))
}
names(samples_list) <- samples

samples_list2 <- lapply(samples.data, CreateSeuratObject)
names(samples_list2) <- samples





share|improve this answer



















  • 1





    Thank you! I ended up going with lapply.

    – GLee
    Nov 15 '18 at 19:25














0












0








0







Here are three ways of doing what you want. I suggest you do not use the first way.



samples <- c("a1", "a2", "a3")
samples.data <- c("a1.data", "a2.data", "a3.data")

for (i in seq_along(samples)) {
assign(samples[i], CreateSeuratObject(raw.data = samples.data[i]))
}

samples_list <- vector("list", length = length(samples))
for (i in seq_along(samples)) {
samples_list[[i]] <- CreateSeuratObject(raw.data = samples.data[i]))
}
names(samples_list) <- samples

samples_list2 <- lapply(samples.data, CreateSeuratObject)
names(samples_list2) <- samples





share|improve this answer













Here are three ways of doing what you want. I suggest you do not use the first way.



samples <- c("a1", "a2", "a3")
samples.data <- c("a1.data", "a2.data", "a3.data")

for (i in seq_along(samples)) {
assign(samples[i], CreateSeuratObject(raw.data = samples.data[i]))
}

samples_list <- vector("list", length = length(samples))
for (i in seq_along(samples)) {
samples_list[[i]] <- CreateSeuratObject(raw.data = samples.data[i]))
}
names(samples_list) <- samples

samples_list2 <- lapply(samples.data, CreateSeuratObject)
names(samples_list2) <- samples






share|improve this answer












share|improve this answer



share|improve this answer










answered Nov 15 '18 at 7:10









Rui BarradasRui Barradas

17.5k51731




17.5k51731








  • 1





    Thank you! I ended up going with lapply.

    – GLee
    Nov 15 '18 at 19:25














  • 1





    Thank you! I ended up going with lapply.

    – GLee
    Nov 15 '18 at 19:25








1




1





Thank you! I ended up going with lapply.

– GLee
Nov 15 '18 at 19:25





Thank you! I ended up going with lapply.

– GLee
Nov 15 '18 at 19:25




















draft saved

draft discarded




















































Thanks for contributing an answer to Stack Overflow!


  • Please be sure to answer the question. Provide details and share your research!

But avoid



  • Asking for help, clarification, or responding to other answers.

  • Making statements based on opinion; back them up with references or personal experience.


To learn more, see our tips on writing great answers.




draft saved


draft discarded














StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53313723%2fr-how-to-index-r-objects-within-a-for-loop-seurat%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown





















































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown

































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown







Popular posts from this blog

Florida Star v. B. J. F.

Danny Elfman

Retrieve a Users Dashboard in Tumblr with R and TumblR. Oauth Issues