You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言dim()与nrow()函数的区别及结果一致原因咨询

关于R中dim()和nrow()的区别,以及你代码结果一致的原因

嘿,作为R语言初学者能留意到这种细节真的很赞!让我帮你把这两个函数的区别讲清楚,同时解释为什么你两次运行的结果会完全相同~

先明确两个函数的核心作用

  • nrow(x):这是专门针对数据框、矩阵这类二维结构的函数,它的唯一作用就是返回对象的行数,返回值是一个单个数值(标量)。比如你用nrow(testing),直接就能得到testing的总行数。
  • dim(x):这个函数返回的是一个长度为2的向量,向量的第一个元素是对象的行数,第二个元素是列数(格式为c(行数, 列数))。所以dim(testing)[1]其实是提取这个向量的第一个值,也就是行数。

为什么你的两段代码结果一致?

你第二段代码里写了nrow(testing)[1],这里其实多做了一步没必要的操作:因为nrow(testing)返回的是一个标量(单个数字),对一个标量使用[1]索引,得到的还是它本身。

举个具体的例子,BostonHousing数据集本身有506行,所以:

  • dim(testing)会返回c(506, 2)
  • dim(testing)[1]就是506
  • nrow(testing)直接返回506
  • nrow(testing)[1]也会返回506(因为标量没有多个元素,取索引[1]就是它自己)

再加上你两次都用了set.seed(5)固定了随机种子,所以sample()函数的随机选取结果自然完全相同。

小建议:代码可读性优化

如果只需要获取行数,直接用nrow(testing)就好,比dim(testing)[1]更直观,代码也更简洁;如果同时需要行数和列数,用dim()会更高效,一次就能拿到两个数值,比如:

dim_testing <- dim(testing)
rows <- dim_testing[1]
cols <- dim_testing[2]

内容的提问来源于stack exchange,提问作者vivek

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 03:53:36