for loop on multiple data frames with different lengths
I'm trying to add a new column to multiple data frames with different lengths.
For example, I have three data frames as below:
iris1 <- iris[iris$Species=="setosa" & iris$Petal.Width == 0.2,]
iris2 <- iris[iris$Species=="versicolor",]
iris3 <- iris[iris$Species=="virginica",]
I could add a column to an individual dataframe by using the following line:
iris1$Sepal <- rowMeans(iris1[, c("Sepal.Length", "Sepal.Width")], na.rm = T)
So I tried to write a for
loop to repeat this for multiple dataframe like below, but it just created a new dataframe i
, and I'm having trouble figuring out writing the right loop.
iris.list <- list(iris1, iris2, iris3)
for (i in iris.list)
i$Sepal <- rowMeans(i[, c("Sepal.Length", "Sepal.Width")], na.rm = T)
(I was searching on StackOverflow and noted that people also advised to use apply
if possible instead of a for
loop but couldn't get apply
to work with my dataframes that have different lengths.)
r for-loop
add a comment |
I'm trying to add a new column to multiple data frames with different lengths.
For example, I have three data frames as below:
iris1 <- iris[iris$Species=="setosa" & iris$Petal.Width == 0.2,]
iris2 <- iris[iris$Species=="versicolor",]
iris3 <- iris[iris$Species=="virginica",]
I could add a column to an individual dataframe by using the following line:
iris1$Sepal <- rowMeans(iris1[, c("Sepal.Length", "Sepal.Width")], na.rm = T)
So I tried to write a for
loop to repeat this for multiple dataframe like below, but it just created a new dataframe i
, and I'm having trouble figuring out writing the right loop.
iris.list <- list(iris1, iris2, iris3)
for (i in iris.list)
i$Sepal <- rowMeans(i[, c("Sepal.Length", "Sepal.Width")], na.rm = T)
(I was searching on StackOverflow and noted that people also advised to use apply
if possible instead of a for
loop but couldn't get apply
to work with my dataframes that have different lengths.)
r for-loop
add a comment |
I'm trying to add a new column to multiple data frames with different lengths.
For example, I have three data frames as below:
iris1 <- iris[iris$Species=="setosa" & iris$Petal.Width == 0.2,]
iris2 <- iris[iris$Species=="versicolor",]
iris3 <- iris[iris$Species=="virginica",]
I could add a column to an individual dataframe by using the following line:
iris1$Sepal <- rowMeans(iris1[, c("Sepal.Length", "Sepal.Width")], na.rm = T)
So I tried to write a for
loop to repeat this for multiple dataframe like below, but it just created a new dataframe i
, and I'm having trouble figuring out writing the right loop.
iris.list <- list(iris1, iris2, iris3)
for (i in iris.list)
i$Sepal <- rowMeans(i[, c("Sepal.Length", "Sepal.Width")], na.rm = T)
(I was searching on StackOverflow and noted that people also advised to use apply
if possible instead of a for
loop but couldn't get apply
to work with my dataframes that have different lengths.)
r for-loop
I'm trying to add a new column to multiple data frames with different lengths.
For example, I have three data frames as below:
iris1 <- iris[iris$Species=="setosa" & iris$Petal.Width == 0.2,]
iris2 <- iris[iris$Species=="versicolor",]
iris3 <- iris[iris$Species=="virginica",]
I could add a column to an individual dataframe by using the following line:
iris1$Sepal <- rowMeans(iris1[, c("Sepal.Length", "Sepal.Width")], na.rm = T)
So I tried to write a for
loop to repeat this for multiple dataframe like below, but it just created a new dataframe i
, and I'm having trouble figuring out writing the right loop.
iris.list <- list(iris1, iris2, iris3)
for (i in iris.list)
i$Sepal <- rowMeans(i[, c("Sepal.Length", "Sepal.Width")], na.rm = T)
(I was searching on StackOverflow and noted that people also advised to use apply
if possible instead of a for
loop but couldn't get apply
to work with my dataframes that have different lengths.)
r for-loop
r for-loop
asked Nov 12 '18 at 23:58
JenJen
144
144
add a comment |
add a comment |
2 Answers
2
active
oldest
votes
Using lapply
:
iris.list <- lapply(iris.list, function(x) cbind(x, Sepal = rowMeans(x[, c("Sepal.Length", "Sepal.Width")], na.rm = T)))
add a comment |
This may not be the best way, but I like to use this method to make it easier to read when I come back to my code:
for (i in 1:length(iris.list))
currIris <- iris.list[[i]]
currIris$Sepal <- rowMeans(currIris[, c("Sepal.Length", "Sepal.Width")], na.rm = T)
iris.list[[i]] <- currIris
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%2f53271841%2ffor-loop-on-multiple-data-frames-with-different-lengths%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
2 Answers
2
active
oldest
votes
2 Answers
2
active
oldest
votes
active
oldest
votes
active
oldest
votes
Using lapply
:
iris.list <- lapply(iris.list, function(x) cbind(x, Sepal = rowMeans(x[, c("Sepal.Length", "Sepal.Width")], na.rm = T)))
add a comment |
Using lapply
:
iris.list <- lapply(iris.list, function(x) cbind(x, Sepal = rowMeans(x[, c("Sepal.Length", "Sepal.Width")], na.rm = T)))
add a comment |
Using lapply
:
iris.list <- lapply(iris.list, function(x) cbind(x, Sepal = rowMeans(x[, c("Sepal.Length", "Sepal.Width")], na.rm = T)))
Using lapply
:
iris.list <- lapply(iris.list, function(x) cbind(x, Sepal = rowMeans(x[, c("Sepal.Length", "Sepal.Width")], na.rm = T)))
answered Nov 13 '18 at 0:18
DiceboyTDiceboyT
84511
84511
add a comment |
add a comment |
This may not be the best way, but I like to use this method to make it easier to read when I come back to my code:
for (i in 1:length(iris.list))
currIris <- iris.list[[i]]
currIris$Sepal <- rowMeans(currIris[, c("Sepal.Length", "Sepal.Width")], na.rm = T)
iris.list[[i]] <- currIris
add a comment |
This may not be the best way, but I like to use this method to make it easier to read when I come back to my code:
for (i in 1:length(iris.list))
currIris <- iris.list[[i]]
currIris$Sepal <- rowMeans(currIris[, c("Sepal.Length", "Sepal.Width")], na.rm = T)
iris.list[[i]] <- currIris
add a comment |
This may not be the best way, but I like to use this method to make it easier to read when I come back to my code:
for (i in 1:length(iris.list))
currIris <- iris.list[[i]]
currIris$Sepal <- rowMeans(currIris[, c("Sepal.Length", "Sepal.Width")], na.rm = T)
iris.list[[i]] <- currIris
This may not be the best way, but I like to use this method to make it easier to read when I come back to my code:
for (i in 1:length(iris.list))
currIris <- iris.list[[i]]
currIris$Sepal <- rowMeans(currIris[, c("Sepal.Length", "Sepal.Width")], na.rm = T)
iris.list[[i]] <- currIris
answered Nov 13 '18 at 0:02
QwfqwfQwfqwf
30818
30818
add a comment |
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%2f53271841%2ffor-loop-on-multiple-data-frames-with-different-lengths%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