0

我正在尝试实现一个非常简单的功能:计算使用“by”选择的矩阵的每个子集的行数(m1 是一个 4 列矩阵):

by(m1, m1[,2:4], nrow)

但我收到错误“参数必须具有相同的长度”。据我了解,当所选子集只有一行时,它是向量而不是矩阵。因此,“nrow”变得无效。我该如何处理?

4

2 回答 2

3

NROW 函数适用于矩阵、数据帧和向量。

> NROW(1:3)
#[1] 3
于 2012-06-25T12:20:00.163 回答
0

你是对的,这nrow仅对矩阵参数有效,那么为什么不传入矩阵呢?

> nrow(1:3)
NULL
> nrow(matrix(1:3,ncol=3))
[1] 1

您可以将您的电话替换nrowfunction(x) nrow(matrix(x,ncol=3)). 完整的表达式是

by(m1, m1[,2:4], function(x) nrow(matrix(x,ncol=3)))
于 2012-06-25T06:21:18.110 回答