Rscripts

Posted howlowl

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Rscripts相关的知识,希望对你有一定的参考价值。

 (一)

https://stackoverflow.com/questions/4951442/formula-with-dynamic-number-of-variables 

for (i in seq_len(factor_number)) {
  for (j in seq(i + 1, factor_number)) {
    linear_model <- lm(Y ~ F1 + F2, list(Y=foo_data_frame$Y,
                                         F1=foo_data_frame[[i]],
                                         F2=foo_data_frame[[j]]))
    # linear_model further analyzing...
  }
}

  

See ?as.formula, e.g.:

factors <- c("factor1", "factor2")
as.formula(paste("y~", paste(factors, collapse="+")))
# y ~ factor1 + factor2

 where factors is a character vector containing the names of the factors you want to use in the model. This you can paste into an lm model, e.g.:

set.seed(0)
y <- rnorm(100)
factor1 <- rep(1:2, each=50)
factor2 <- rep(3:4, 50)
lm(as.formula(paste("y~", paste(factors, collapse="+"))))

# Call:
# lm(formula = as.formula(paste("y~", paste(factors, collapse = "+"))))

# Coefficients:
# (Intercept)      factor1      factor2  
#    0.542471    -0.002525    -0.147433

  



(二)
> model4 <- lm(LungCapData[1:10, 1] ~ LungCapData[1:10, 2] + LungCapData[1:10, 3] + LungCapData[1:10, 4] + LungCapData[1:10, 5])
> summary(model4)

Call:
lm(formula = LungCapData[1:10, 1] ~ LungCapData[1:10, 2] + LungCapData[1:10, 
    3] + LungCapData[1:10, 4] + LungCapData[1:10, 5])

Residuals:
         1          2          3          4          5          6          7          8          9 
 1.006e+00  8.327e-17  1.162e-01  1.773e+00  3.168e-01 -1.162e-01 -1.364e+00 -9.059e-01 -7.653e-01 
        10 
-6.031e-02 

Coefficients:
                         Estimate Std. Error t value Pr(>|t|)
(Intercept)               -4.6843     6.3616  -0.736    0.495
LungCapData[1:10, 2]       0.3493     0.2142   1.630    0.164
LungCapData[1:10, 3]       0.1224     0.1317   0.930    0.395
LungCapData[1:10, 4]yes   -0.6192     1.7090  -0.362    0.732
LungCapData[1:10, 5]male   0.4579     1.2773   0.358    0.735

Residual standard error: 1.229 on 5 degrees of freedom
Multiple R-squared:  0.8242,	Adjusted R-squared:  0.6835 
F-statistic: 5.859 on 4 and 5 DF,  p-value: 0.03968

> 
> model5 <- lm(LungCapData[1:725, 1] ~ LungCapData[1:725, 2] + LungCapData[1:725, 3] + LungCapData[1:725, 4] + LungCapData[1:725, 5])
> summary(model5)

Call:
lm(formula = LungCapData[1:725, 1] ~ LungCapData[1:725, 2] + 
    LungCapData[1:725, 3] + LungCapData[1:725, 4] + LungCapData[1:725, 
    5])

Residuals:
    Min      1Q  Median      3Q     Max 
-3.2915 -0.7360  0.0184  0.7125  3.0599 

Coefficients:
                           Estimate Std. Error t value Pr(>|t|)    
(Intercept)               -11.33282    0.47245 -23.987  < 2e-16 ***
LungCapData[1:725, 2]       0.16012    0.01806   8.864  < 2e-16 ***
LungCapData[1:725, 3]       0.26363    0.01009  26.123  < 2e-16 ***
LungCapData[1:725, 4]yes   -0.61774    0.12633  -4.890 1.24e-06 ***
LungCapData[1:725, 5]male   0.38528    0.07991   4.822 1.74e-06 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 1.023 on 720 degrees of freedom
Multiple R-squared:  0.8531,	Adjusted R-squared:  0.8523 
F-statistic:  1045 on 4 and 720 DF,  p-value: < 2.2e-16

> model0 <- lm(LungCap ~ Age + Height + Smoke + Gender)
> summary(model0)

Call:
lm(formula = LungCap ~ Age + Height + Smoke + Gender)

Residuals:
    Min      1Q  Median      3Q     Max 
-3.2915 -0.7360  0.0184  0.7125  3.0599 

Coefficients:
             Estimate Std. Error t value Pr(>|t|)    
(Intercept) -11.33282    0.47245 -23.987  < 2e-16 ***
Age           0.16012    0.01806   8.864  < 2e-16 ***
Height        0.26363    0.01009  26.123  < 2e-16 ***
Smokeyes     -0.61774    0.12633  -4.890 1.24e-06 ***
Gendermale    0.38528    0.07991   4.822 1.74e-06 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 1.023 on 720 degrees of freedom
Multiple R-squared:  0.8531,	Adjusted R-squared:  0.8523 
F-statistic:  1045 on 4 and 720 DF,  p-value: < 2.2e-16

  

(三)

http://www.cnblogs.com/howlowl/p/8512222.html

> mod <- lm(LungCap ~ Age)
> mod
 
Call:
lm(formula = LungCap ~ Age)
 
Coefficients:
(Intercept)          Age 
     1.1469       0.5448 
 
> summary(mod)
 
Call:
lm(formula = LungCap ~ Age)
 
Residuals:
    Min      1Q  Median      3Q     Max
-4.7799 -1.0203 -0.0005  0.9789  4.2650
 
Coefficients:
            Estimate Std. Error t value Pr(>|t|)   
(Intercept)  1.14686    0.18353   6.249 7.06e-10 ***
Age          0.54485    0.01416  38.476  < 2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
 
Residual standard error: 1.526 on 723 degrees of freedom
Multiple R-squared:  0.6719,    Adjusted R-squared:  0.6714
F-statistic:  1480 on 1 and 723 DF,  p-value: < 2.2e-16
 
> attributes(summary(mod))
$names
 [1] "call"          "terms"         "residuals"     "coefficients"  "aliased"       "sigma"       
 [7] "df"            "r.squared"     "adj.r.squared" "fstatistic"    "cov.unscaled"
 
$class
[1] "summary.lm"
 
> summary(mod)$r.squared
[1] 0.6718669
> summary(mod)$adj.r.squared
[1] 0.6714131
> summary(mod)$coefficients[, 4]
  (Intercept)           Age
 7.056380e-10 4.077172e-177
> summary(mod)$coefficients[,1:4]
             Estimate Std. Error   t value      Pr(>|t|)
(Intercept) 1.1468578 0.18352850  6.248936  7.056380e-10
Age         0.5448484 0.01416087 38.475634 4.077172e-177
> class(summary(mod))
[1] "summary.lm"
> class(summary(mod)$coefficients)
[1] "matrix"
> class(summary(mod)$coefficients[,4])
[1] "numeric"
> class(summary(mod)$coefficients[,1:4])
[1] "matrix"
>
> summary(mod)$coefficients[, 4]["(Intercept)"]
(Intercept)
7.05638e-10
> summary(mod)$coefficients[, 4]["Age"]
          Age
4.077172e-177
>
> summary(mod)$coefficients[, 4][1]
(Intercept)
7.05638e-10
> summary(mod)$coefficients[, 4][2]
          Age
4.077172e-177
> summary(mod)$coefficients[, 4][3]
<NA>
  NA

  (四)append values to vector in r

 

128down voteaccepted

Here are several ways to do it. All of them are discouraged. Appending to an object in a for loop causes the entire object to be copied on every iteration, which causes a lot of people to say "R is slow", or "R loops should be avoided".

# one way
for (i in 1:length(values))
  vector[i] <- values[i]
# another way
for (i in 1:length(values))
  vector <- c(vector, values[i])
# yet another way?!?
for (v in values)
  vector <- c(vector, v)
# ... more ways

  

help("append") would have answered your question and saved the time it took you to write this question (but would have caused you to develop bad habits). ;-)

Note that vector <- c() isn‘t an empty vector; it‘s NULL. If you want an empty character vector, use vector <- character().

Also note, as BrodieG pointed out in the comments: if you absolutely must use a for loop, then at least pre-allocate the entire vector before the loop. This will be much faster than appending for larger vectors.

set.seed(21)
values <- sample(letters, 1e4, TRUE)
vector <- character(0)
# slow
system.time( for (i in 1:length(values)) vector[i] <- values[i] )
#   user  system elapsed 
#  0.340   0.000   0.343 
vector <- character(length(values))
# fast(er)
system.time( for (i in 1:length(values)) vector[i] <- values[i] )
#   user  system elapsed 
#  0.024   0.000   0.023

  

 

 

以上是关于Rscripts的主要内容,如果未能解决你的问题,请参考以下文章

微信小程序代码片段

VSCode自定义代码片段——CSS选择器

谷歌浏览器调试jsp 引入代码片段,如何调试代码片段中的js

片段和活动之间的核心区别是啥?哪些代码可以写成片段?

VSCode自定义代码片段——.vue文件的模板

VSCode自定义代码片段6——CSS选择器