我正在寻找一种将表格式R对象导出到excel / csv的方法。例如,增益表,在R中它被保存为一个对象。通常的write.table函数不允许我将对象转换为csv。虽然对象就像一张桌子......:
增益(实际,预测,组= 10,最佳= FALSE,百分比=假) - > gains_test2
> dput(head(gains_test2))
structure(list(depth = c(10, 20, 30, 40, 50, 60, 70, 80, 90,
100), obs = c(146L, 147L, 147L, 147L, 147L, 146L, 147L, 147L,
147L, 147L), cume.obs = c(146L, 293L, 440L, 587L, 734L, 880L,
1027L, 1174L, 1321L, 1468L), mean.resp = c(0.0116469582940705,
0.0125322442801302, 0.0142252481339337, 0.0106531565074638, 0.0130847548479835,
0.0106034244135535, 0.00455378455081303, 0.0061834241946857,
0.00989105136990672, 0.00841145735618072), cume.mean.resp = c(0.0116469582940705,
0.012091112014039, 0.0128041074904584, 0.0122654536667783, 0.012429537145848,
0.0121265684425355, 0.0110426354025324, 0.0104341992461836, 0.010373758112336,
0.0101772606932932), cume.pct.of.total = c(0.113817337305101,
0.237124763149948, 0.377090015198269, 0.481908695451763, 0.610652390679108,
0.714272022740551, 0.759077680710614, 0.819917710900762, 0.917237876073098,
1)), .Names = c("depth", "obs", "cume.obs", "mean.resp", "cume.mean.resp",
"cume.pct.of.total"))
> print(gains_test2)
Depth Cume Cume Pct Mean
of Cume Mean Mean of Total Lift Cume Model
File N N Resp Resp Resp Index Lift Score
-------------------------------------------------------------------------
10 146 146 0.01 0.01 11.38 % 114 114 0.02
20 147 293 0.01 0.01 23.71 % 123 119 0.01
30 147 440 0.01 0.01 37.71 % 140 126 0.01
40 147 587 0.01 0.01 48.19 % 105 121 0.01
50 147 734 0.01 0.01 61.07 % 129 122 0.01
60 146 880 0.01 0.01 71.43 % 104 119 0.01
70 147 1027 0.00 0.01 75.91 % 45 109 0.01
80 147 1174 0.01 0.01 81.99 % 61 103 0.01
90 147 1321 0.01 0.01 91.72 % 97 102 0.01
100 147 1468 0.01 0.01 100.00 % 83 100 0.01
> as.data.frame(gains_test2)
Error in as.data.frame.default(gains_test2) :
cannot coerce class '"gains"' into a data.frame
任何想法?谢谢!
=============================================== =========================
答案 0 :(得分:0)
这不是一个数据帧,但很容易把它变成一个。
dat <- as.data.frame(structure(list(depth = c(10, 20, 30, 40, 50, 60, 70, 80,
90, 100), obs = c(146L, 147L, 147L, 147L, 147L, 146L, 147L, 147L,
147L, 147L), cume.obs = c(146L, 293L, 440L, 587L, 734L, 880L,
1027L, 1174L, 1321L, 1468L), mean.resp = c(0.0116469582940705,
0.0125322442801302, 0.0142252481339337, 0.0106531565074638, 0.0130847548479835,
0.0106034244135535, 0.00455378455081303, 0.0061834241946857,
0.00989105136990672, 0.00841145735618072), cume.mean.resp = c(0.0116469582940705,
0.012091112014039, 0.0128041074904584, 0.0122654536667783, 0.012429537145848,
0.0121265684425355, 0.0110426354025324, 0.0104341992461836, 0.010373758112336,
0.0101772606932932), cume.pct.of.total = c(0.113817337305101,
0.237124763149948, 0.377090015198269, 0.481908695451763, 0.610652390679108,
0.714272022740551, 0.759077680710614, 0.819917710900762, 0.917237876073098,
1)), .Names = c("depth", "obs", "cume.obs", "mean.resp", "cume.mean.resp",
"cume.pct.of.total")) )
write.csv(dat, file="test.csv")
显然成功。 (大多数R-people会说具有和不具有属性的原子和递归向量,现在包括列表,数据帧,矩阵,数组,普通向量和因子的伞都是“对象”。)
我无法判断原始gains_test2
对象是否除了结构对象中的列表之外还有更多内容。增益分类对象的打印方法似乎添加了额外的信息,可能不在head
返回的前六个列表中。我本以为如果更不规则会有更多属性,但也许这些复杂性在增益对象的第7或更高列表中。
您可能会发现可以使用head(gains_test2, 10)
提取前10个列表并转换为数据帧。我承认我有时会通过屏幕抓取R控制台输出并使用数据/文本到列...对话框来导出到Excel。如果您最终想要capture.console
- ed对象的输出并且发现对象的结构不是您在控制台上看到的那样,那么还有print
函数。