'How to combine R loop result in a dataframe
My current code is like below:
for (i in c(1:10))
{excess_returns <- i - 2
print(excess_returns
}
When I use print(), it prints out each output but how could I merge each output and make them into a data frame.
This is a simplified vision of my question, I got like 23 columns in a dataset and I would like to use each one of each to subtract another one column, and combine all the outputs together to form up a new dataframe
Thanks for helping
Solution 1:[1]
To return the output of the loop as a data.frame, we can use @DaveArmstrong's answer. But we can also use a looping function to achieve the same desired output:
lapply(1:10, function(x) x - 2)
If we have an actual data.frame, we use the dataframe as argument to lapply, as in:
my_df <- iris[1:4]
lapply(my_df, \(x) x-2)
Or with dplyr:
library(dplyr)
my_df %>% mutate(across(everything(), ~ .x -2))
Solution 2:[2]
How about like this:
excess_returns <- rep(NA, 10)
for (i in c(1:10)) {
excess_returns[i] <- i - 2
}
excess_returns
#> [1] -1 0 1 2 3 4 5 6 7 8
Created on 2022-02-04 by the reprex package (v2.0.1)
Note that in the above, you first initialize the excess_returns vector and then fill it in with the for loop. This is the preferred method, particularly if the real data problem is much larger than this toy example.
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | GuedesBF |
| Solution 2 | DaveArmstrong |
