为什么 R 打印 3 行 1 列作为答案

问题描述 投票:0回答: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 在;y 上显示 1 行,但 x_poly[2:4] 显示 3 行。

r matrix cbind poly
1个回答
2
投票

使用

`[`
进行提取时,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)
© www.soinside.com 2019 - 2024. All rights reserved.