R: How to index R objects within a for loop (Seurat)
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
add a comment |
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
This is a bad idea. 1) You are rewritingi
every time through the inner loop onj
. 2) You are trying to createn = length(samples)
objects in the global environment. Instead you should keep the objects in alist
.
– Rui Barradas
Nov 15 '18 at 7:04
add a comment |
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
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
r
asked Nov 15 '18 at 6:36
GLeeGLee
32
32
This is a bad idea. 1) You are rewritingi
every time through the inner loop onj
. 2) You are trying to createn = length(samples)
objects in the global environment. Instead you should keep the objects in alist
.
– Rui Barradas
Nov 15 '18 at 7:04
add a comment |
This is a bad idea. 1) You are rewritingi
every time through the inner loop onj
. 2) You are trying to createn = length(samples)
objects in the global environment. Instead you should keep the objects in alist
.
– 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
add a comment |
1 Answer
1
active
oldest
votes
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
1
Thank you! I ended up going with lapply.
– GLee
Nov 15 '18 at 19:25
add a comment |
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
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
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
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
1
Thank you! I ended up going with lapply.
– GLee
Nov 15 '18 at 19:25
add a comment |
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
1
Thank you! I ended up going with lapply.
– GLee
Nov 15 '18 at 19:25
add a comment |
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
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
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
add a comment |
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
add a comment |
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.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
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
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
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
This is a bad idea. 1) You are rewriting
i
every time through the inner loop onj
. 2) You are trying to createn = length(samples)
objects in the global environment. Instead you should keep the objects in alist
.– Rui Barradas
Nov 15 '18 at 7:04