【问题标题】:How do I sort an R double by the second column, while preserving parings?如何在保留配对的同时按第二列对 R double 进行排序?
【发布时间】:2020-09-16 12:07:36
【问题描述】:

我有一个 double,其中第一列是课程名称,第二列是 lambda 值(这些是来自惩罚回归模型的系数)。我的 double 有几千行长,大多数 lambda 值为零。但是,有一些非零值。如何过滤这个双精度,以便只保留非零系数?这是我所拥有的:

查看交叉验证误差最小的系数:

course_coef1 <- as.matrix(coef(lasso_reg, lasso_reg$lambda.min))

head(course_coef1)
                    1
(Intercept) 0.4170463
PHYS 1116   0.0000000
VISST 2511  0.0000000
MATH 1920   0.0000000
PHIL 1110   0.0000000
FREN 1220   0.0000000

当我这样做时,我删除了我不想这样做的双精度的左列。我也希望能够看到系数所指的课程

non_zero <-  course_coef1[course_coef1[,1] != 0]

non_zero
 [1]  4.170463e-01  1.186766e-02  1.022153e-02 -1.728692e-02 -1.267802e-02  2.953045e-02 -7.366728e-04 -6.825617e-02  2.581637e-02  1.030888e-01
[11] -6.815507e-02 -6.177919e-04  3.138149e-02  1.297283e-05  7.753567e-02 -1.562090e-01 -2.301548e-01 -2.635691e-02 -1.382577e-02  1.487066e-02
[21] -3.922772e-04 -2.267470e-02 -2.668698e-02  3.372374e-02  2.309662e-02  4.383800e-02  8.291964e-03  2.643610e-04 -2.237277e-03 -3.068006e-04

【问题讨论】:

  • 做到了:) :)。非常感谢!

标签: r sorting double glmnet


【解决方案1】:

两个问题。

  1. 您正在抓取列,因为您省略了逗号,请尝试[... != 0,](添加逗号);
  2. 它可能会从矩阵下降到向量,用,drop=FALSE 修复。
z <- as.matrix(coef(lm(mpg~disp+factor(cyl), data=mtcars)))
z
#                     [,1]
# (Intercept)  29.53476781
# disp         -0.02730864
# factor(cyl)6 -4.78584624
# factor(cyl)8 -4.79208587

z[z[,1] < 0]
# [1] -0.02730864 -4.78584624 -4.79208587
z[z[,1] < 0,]
#         disp factor(cyl)6 factor(cyl)8 
#  -0.02730864  -4.78584624  -4.79208587 
z[z[,1] < 0,, drop = FALSE]
#                     [,1]
# disp         -0.02730864
# factor(cyl)6 -4.78584624
# factor(cyl)8 -4.79208587

【讨论】:

    猜你喜欢
    • 2017-03-26
    • 1970-01-01
    • 2012-06-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-08
    相关资源
    最近更新 更多