Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Lasso之后:将剩余变量存储为新数据帧(使用R)_R_Dataframe_Subset_Lasso Regression - Fatal编程技术网

Lasso之后:将剩余变量存储为新数据帧(使用R)

Lasso之后:将剩余变量存储为新数据帧(使用R),r,dataframe,subset,lasso-regression,R,Dataframe,Subset,Lasso Regression,首先,非常感谢您的兴趣和时间。我的问题(使用R): 为了预测yvar,我运行了一个套索回归,将X变量集从736减少到30 lasso.mod =glmnet(x,y,alpha=1) cv.out =cv.glmnet (x,y,alpha=1) lasso.bestlam =cv.out$lambda.min tmp_coef = coef(cv.out,s=lasso.bestlam) varnames = data.frame(name = tmp_coef@Dimnames[[1]][

首先,非常感谢您的兴趣和时间。我的问题(使用R): 为了预测yvar,我运行了一个套索回归,将X变量集从736减少到30

lasso.mod =glmnet(x,y,alpha=1)
cv.out =cv.glmnet (x,y,alpha=1)
lasso.bestlam =cv.out$lambda.min
tmp_coef = coef(cv.out,s=lasso.bestlam)

varnames = data.frame(name = tmp_coef@Dimnames[[1]][tmp_coef@i])
mylist = list(name = tmp_coef@Dimnames[[1]][tmp_coef@i])
因此,我将剩下的变量名作为数据帧和列表。 如何创建一个新的数据框架,其中包含剩余的30个变量及其观测值?换言之:如何获得原始数据中不包含737个变量但仅包含31个变量的子集

我认为这应该是相当容易的,但我已经花了两个多小时,它从来没有工作

致以最良好的祝愿,
Thomas无法测试您的解决方案,因为我没有数据,但这应该可以做到:

varnames <- tmp_coef@Dimnames[[1]][tmp_coef@i]
as.data.frame(cbind(x[, varnames], y))

varnamesYour
tmp_coef@Dimnames[[1]][tmp_coef@i]
variable包含其余变量的名称,但也包含“(Intercept)”作为第一项。如果将其与
-1]
一起丢弃,则可以提取列:

x <- as.data.frame(x[, tmp_coef@Dimnames[[1]][tmp_coef@i][-1]])

这似乎是一个标准的列选择问题。以旧数据帧为例,选择列表中的列作为向量。例如,
mtcars[,c(“mpg”,“cyl”)]
将从
mtcars
数据集中选择这两列。搜索此站点以获取列选择帮助将为您提供多个答案。问题是,套索后的变量可能会发生变化(取决于我在运行套索之前所做的其他事情)。因此,我不想每次手写30个变量。但是谢谢你的时间和考虑。
x <- as.data.frame(x[, tmp_coef@i[-1]])