R语言 为什么R打印出3行1列作为答案
问题描述
x <- data.frame(Level=c(6.5))
x_poly <- poly(x$Level, 4, raw=TRUE)
x1 <- cbind(x, x_poly[, 2:4])
这是我的代码,无论出于什么原因,每当我使用cbind函数时,就会打印出3行和3列,尽管x和x_poly只有1行。
x_poly <- as.data.frame(x_poly[, 2:4])
print(dim(x_poly))
我试图打印x_poly和x_poly[,2:4]的维度。不知为何,x_poly只显示了1行,但x_poly[2:4]显示了3行。
解决方案
当使用[
进行提取时,R使用drop(参见?drop)强制转换为可能的最低维度。
因此,从矩阵中提取时,
> dim(x_poly)
[1] 1 4
你将获得一个向量。
> dim(x_poly[, 2:4])
NULL
我们可以做drop=FALSE
。
> dim(x_poly[, 2:4, drop=FALSE])
[1] 1 3
因此,您正在寻找的是
> cbind(x, x_poly[, 2:4, drop=FALSE])
Level 2 3 4
1 6.5 42.25 274.625 1785.062
数据:
x <- data.frame(Level=c(6.5))
x_poly <- poly(x$Level, 4, raw=TRUE)