将列表更改为数据框时出错

问题描述 投票:0回答:1

我正在尝试将插入符号包函数 varImp()(称为 caretVarImp)的结果保存为数据框。写入保存到 excel 时出现以下错误: write_xlsx(caretVarImp, "C:/Users/xx/Desktop/xxx/data/caretVarImp.xlsx") 错误: 参数 x 必须是数据框或数据框列表

这是我试图将列表强制转换为数据框的代码(这两列都不起作用,我需要变量名作为第 1 列,重要性作为第 2 列)

as.data.frame(caretVarImp[1])
as.data.frame(caretVarImp)
do.call(rbind.data.frame, caretVarImp)
do.call(rbind.data.frame, caretVarImp) 

这是我的数据样本:

structure(list(importance = structure(list(Overall = c(73.0652774030728, 
5.59788533193309, 12.0493266941609, 10.3386457708192, 9.57393450408533, 
5.20541566722316, 1.3288171116571, 6.35796455170938, 11.0935135074297, 
11.1559016120386, 2.40781736204481, 0.703213050653965, 11.5347692336125, 
0.937420219353987, 4.47109480179074, 0.0470156705635818, 0.158416217418262, 
1.35381531327241, 6.2701821289417, 2.65864656303475, 1.69685872584132, 
2.2675644307254, 1.62780296736856, 0.00855219101468707, 1.87661286537946, 
1.09727044098617, 2.74041675134488, 1.23786457706451, 8.83041668981274, 
2.4225639811227, 0.286604208712965, 1.52949037270653, 6.03677040957175, 
4.15204475304192, 1.09846208156958, 1.61659364294715, 1.76557530305865, 
0, 2.01967480498812, 1.08329243876112, 2.84187833461568, 10.9084292761061, 
0.915296886162838, 2.69586735645909, 2.3910000882193, 1.33643391850196, 
7.56312544985906, 1.62542508956097, 1.47449134664207, 1.03027425996789, 
1.98025126217767, 11.6845488515631, 0.0893795415248947, 2.21514765028306, 
2.01986607764691, 1.29315826619842, 6.26319859009358, 3.05821732792535, 
1.70703118435575, 0.767842346252973, 1.50569212601442, 12.8850643837551, 
0.127850722802544, 1.73664878251376, 1.06397923302445, 0.341640676222888, 
6.89008391732415, 3.90084252998416, 1.61479430802966, 0.287676328419298, 
2.09035574634407, 80.3198239777205, 80.4142898640079, 86.2331430125215, 
86.9372667058436, 100, 97.6371166550049, 91.5186553702695, 94.1976827669785, 
74.1410992786718, 73.1080835238438, 75.1894759938387, 80.1260776091768
)), class = "data.frame", row.names = c("Age", "Drainage1", "Drainage2", 
"Drainage3", "Drainage4", "Drainage5", "Drainage6", "HSG2", "HSG3", 
"HSG4", "HSG5", "HSG6", "HSG7", "LU20052", "LU20053", "LU20054", 
"LU20055", "LU20056", "LU20057", "LU20058", "LU20059", "LU200510", 
"LU200511", "LU200512", "LU200513", "LU200514", "LU200515", "LU19902", 
"LU19903", "LU19904", "LU19905", "LU19906", "LU19907", "LU19908", 
"LU19909", "LU199010", "LU199011", "LU199012", "LU199013", "LU199014", 
"LU199015", "LU19752", "LU19756", "LU19757", "LU19758", "LU19759", 
"LU197510", "LU197511", "LU197513", "LU197514", "LU197515", "LU19602", 
"LU19606", "LU19607", "LU19608", "LU19609", "LU196010", "LU196011", 
"LU196013", "LU196014", "LU196015", "LU19452", "LU19456", "LU19457", 
"LU19458", "LU19459", "LU194510", "LU194511", "LU194513", "LU194514", 
"LU194515", "NO3_180", "NO3_400", "DO5", "DO2", "Precip2005", 
"Precip1990", "Precip1975", "Precip1960", "Irrig2005", "Irrig1990", 
"Irrig1975", "Irrig1960")), model = "rf", calledFrom = "varImp"), class = "varImp.train")
r list dataframe r-caret
1个回答
0
投票
library(openxlsx)
df_var_imp <- caretVarImp$importance
write.xlsx(df_var_imp, "caretVarImp.xlsx")
© www.soinside.com 2019 - 2024. All rights reserved.