【发布时间】:2018-03-01 19:56:29
【问题描述】:
我固执地试图在一行中创建一个具有命名行和列的数据框。我意识到我可以通过使用 colnames(forecast) 轻松做到这一点,但我想简化一下,如果只是为了证明我可以做到。
以下不起作用--没有错误,但未设置列名
forecast <- as.data.frame(cbind(c(1, 32, 60, 91, 121, 152,
182, 213, 244, 274, 305, 335),
c(31, 59, 90, 120, 151, 181,
212, 243, 273, 304, 334, 365),
as.vector(rep(0, times=12))),
row.names = c("Jan", "Feb", "Mar", "Apr", "May", "Jun",
"Jul", "Aug", "Sep", "Oct", "Nov", "Dec"),
col.names = c("Start", "End", "forecast"))
> forecast
V1 V2 V3
Jan 1 31 0
Feb 32 59 0
Mar 60 90 0
Apr 91 120 0
May 121 151 0
Jun 152 181 0
Jul 182 212 0
Aug 213 243 0
Sep 244 273 0
Oct 274 304 0
Nov 305 334 0
Dec 335 365 0
以下确实可以按需要工作。
forecast <- setNames(data.frame(cbind(c(1, 32, 60, 91, 121, 152,
182, 213, 244, 274, 305, 335),
c(31, 59, 90, 120, 151, 181,
212, 243, 273, 304, 334, 365),
as.vector(rep(0, times=12))),
row.names = c("Jan", "Feb", "Mar", "Apr", "May", "Jun",
"Jul", "Aug", "Sep", "Oct", "Nov", "Dec")),
c("Start", "End", "forecast"))
> forecast
Start End forecast
Jan 1 31 0
Feb 32 59 0
Mar 60 90 0
Apr 91 120 0
May 121 151 0
Jun 152 181 0
Jul 182 212 0
Aug 213 243 0
Sep 244 273 0
Oct 274 304 0
Nov 305 334 0
Dec 335 365 0
不得不嵌套在另一个函数中似乎很奇怪。在 as.data.frame 文档中,它说使用 col.names = names(x)。这是否意味着它只能从输入对象生成名称?
【问题讨论】:
-
这是什么语言? (“DataFrames”是一个存在于许多语言中的概念,例如 R、Julia 和 Python。这对我来说看起来像 R,但我从未真正使用过 R,所以我真的只是在猜测......)
-
对不起。这是在 R 中。
-
为什么不直接:
data.frame(Start = c(1, 32, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335), End= c(31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365), forecast = as.vector(rep(0, times=12)), row.names = c("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"))? -
@tushaR--谢谢,成功了。