如何在保留配对的同时按第二列对 R double 进行排序?
How do I sort an R double by the second column, while preserving parings?
我有一个双列,其中第一列是课程名称,第二列是 lambda 值(这些是惩罚回归模型的系数)。我的双精度数有几千行,其中大部分 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
当我执行此操作时,我删除了 double 的左列,这是我不想做的。我也希望能够看到系数所指的课程
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
两个问题。
- 您正在抓取列,因为您省略了逗号,请尝试
[... != 0,]
(添加逗号);
- 可能是从矩阵到向量,用
,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
我有一个双列,其中第一列是课程名称,第二列是 lambda 值(这些是惩罚回归模型的系数)。我的双精度数有几千行,其中大部分 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
当我执行此操作时,我删除了 double 的左列,这是我不想做的。我也希望能够看到系数所指的课程
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
两个问题。
- 您正在抓取列,因为您省略了逗号,请尝试
[... != 0,]
(添加逗号); - 可能是从矩阵到向量,用
,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