I think it would be helpful to know what the structure of the data is. Is x a matrix, a data.frame, a tibble, a list, or what? The best option would be to create a reproducible example: FAQ: What's a reproducible example (`reprex`) and how do I do one? and it would make it a bit easier for us to help
I have extracted x from an excel file, when i type class for x and y, I obtain the results:
[1] "tbl_df" "tbl" "data.frame"
Since I am a beginner in R, I don't know exactly if it is a data.frame exactly.
Right now I have converted both x and y into matrices and trying to make it work.
for (i in 1:ncol(x)){
ab[[i]] <- abline(lm(y[,1]~x[,i])
}
Please try to construct a reproducible example as I suggested. First, to use the function lm, you must specify a formula. The function abline adds a line to an existing plot. Is this what you want? Finally, the last line of your code is missing a closing parentheses which is causing the error you are seeing.
I've made some code that works but I'm really not sure it is what you want. What problem are you trying to solve?
library(tidyverse)
nrow <- 6
y <- tibble(Jan=rnorm(nrow))
x <- data.frame(matrix(rnorm(5*nrow), nrow=nrow)) %>% as_tibble()
y
#> # A tibble: 6 x 1
#> Jan
#> <dbl>
#> 1 -0.394
#> 2 -2.27
#> 3 0.00957
#> 4 1.15
#> 5 0.642
#> 6 -0.928
x
#> # A tibble: 6 x 5
#> X1 X2 X3 X4 X5
#> <dbl> <dbl> <dbl> <dbl> <dbl>
#> 1 -1.88 0.775 0.249 2.05 1.70
#> 2 0.512 1.14 0.233 -1.32 -0.513
#> 3 -0.620 0.462 -1.24 0.436 0.485
#> 4 0.491 1.22 -0.113 0.213 -0.166
#> 5 -1.00 -0.913 0.252 0.101 0.546
#> 6 0.201 -0.221 -0.533 0.948 -0.318
ab <- vector("list", length(x))
for (i in 1:length(x)){
dat <- data.frame(y=y$Jan, x=x[[i]])
ab[[i]] <- lm(y~x, data=dat)
}
ab
#> [[1]]
#>
#> Call:
#> lm(formula = y ~ x, data = dat)
#>
#> Coefficients:
#> (Intercept) x
#> -0.4128 -0.3009
#>
#>
#> [[2]]
#>
#> Call:
#> lm(formula = y ~ x, data = dat)
#>
#> Coefficients:
#> (Intercept) x
#> -0.1642 -0.3263
#>
#>
#> [[3]]
#>
#> Call:
#> lm(formula = y ~ x, data = dat)
#>
#> Coefficients:
#> (Intercept) x
#> -0.3467 -0.2533
#>
#>
#> [[4]]
#>
#> Call:
#> lm(formula = y ~ x, data = dat)
#>
#> Coefficients:
#> (Intercept) x
#> -0.453 0.383
#>
#>
#> [[5]]
#>
#> Call:
#> lm(formula = y ~ x, data = dat)
#>
#> Coefficients:
#> (Intercept) x
#> -0.4260 0.4434
I am doing linear regression. I have 6 independent variables and 12 dependent ones. I have to plot the regression line of each dependent variables y against each dependent variable x.
I want to plot all the 12 y against a specific x on a single graph, and keep repeating for every other x. So in total i should have six graphs, one for each x.
And I want to store the statistics results in an excel file.
x <- matrix(1:60, 10, 6)
y <- matrix(1:120, 10, 12)
plot(
x,
y,
type = "n",
main = "y vs x",
xlab = "x",
ylab = "y"
)
for (i in 1:ncol(x)) {
ab[[i]] <- abline(lm(y[, 1] ~ x[, i])
}