R数据框行名称显示矩阵而不是数值

wn9m85ua  于 2023-04-03  发布在  其他
关注(0)|答案(2)|浏览(141)

我有以下创建一个数据框。我的问题是,数据框行名称显示为[1,],[2,],[3,],[4,]等,而不是仅仅1,2,3,4等(见下文的输出)。为什么以及如何解决这个问题,只是让我的行名称像往常一样显示(递增的数字)。

Code:

df <- data.frame(id=c("id"),nobs=c("nobs"))
df <- cbind(id,nobs)
df

id和nobs是两个向量,每个向量有5个数值……

Current output:
     id nobs
[1,]  2 3653
[2,]  4 3653
[3,]  8 1462
[4,] 10 1097
[5,] 12  732

Desired output:
   id nobs
1  2 3653
2  4 3653
3  8 1462
4 10 1097
5 12  732
aiazj4mn

aiazj4mn1#

你的第二个命令完全覆盖了第一个命令

df <- data.frame(id=id, nobs=nobs)

由于cbind的输入是向量(我假设),因此默认情况下它返回一个矩阵。
此外,还可以通过以下方式将其强制为 Dataframe

df <- data.frame(cbind(id, nobs))

但这也太夸张了

9fkzdhlc

9fkzdhlc2#

**注意:**我不建议你使用这两种方法。如果你想要一个data.frame,你可以直接创建它,就像Paul展示的那样(或者你自己已经做过了)。这只是为了说明为什么会发生这种情况。虽然有时候使用sapply时,输出会是一个矩阵,你可能想绑定两个这样的矩阵,并将它们作为data.frame

cbind?cbind)的帮助页面:
函数cbind和rbind是S3的泛型,具有 Dataframe 的方法。如果至少一个参数是 Dataframe ,其余参数是向量或矩阵,则将使用 Dataframe 方法。

** Dataframe 方式**

cbind数据框方法只是data.frame(...,check.names = FALSE)的 Package 器。这意味着它将拆分数据框参数中的矩阵列,并将字符列转换为因子,除非指定stringsAsFactors = FALSE。
因此,如果你传递两个向量,data.frame的 Package 器不会被调用。因此,你得到一个矩阵。
你能做什么?
1)您可以创建 * 至少一个 * data.frame参数并传递给cbind
2)用as.data.frame(.) Package cbind参数。

x <- 1:5
y <- 6:10
> cbind(data.frame(x), y)
  x  y
1 1  6
2 2  7
3 3  8
4 4  9
5 5 10

> as.data.frame(cbind(x,y))
  x  y
1 1  6
2 2  7
3 3  8
4 4  9
5 5 10

相关问题