我試圖實現一個非常簡單的功能:計數使用「by」選擇的矩陣的每個子集的行數(m1是4列矩陣):R:功能通過 - 處理一行和多行子集相同
by(m1, m1[,2:4], nrow)
但我得到錯誤「參數必須具有相同的長度」。據我所知,所選擇的子集是一個矢量而不是矩陣,當它只有一行時。因此,「nrow」變得無效。我該如何處理?
我試圖實現一個非常簡單的功能:計數使用「by」選擇的矩陣的每個子集的行數(m1是4列矩陣):R:功能通過 - 處理一行和多行子集相同
by(m1, m1[,2:4], nrow)
但我得到錯誤「參數必須具有相同的長度」。據我所知,所選擇的子集是一個矢量而不是矩陣,當它只有一行時。因此,「nrow」變得無效。我該如何處理?
你說得對,nrow
只對矩陣參數有效,所以爲什麼不通過矩陣?
> nrow(1:3)
NULL
> nrow(matrix(1:3,ncol=3))
[1] 1
你可以只是function(x) nrow(matrix(x,ncol=3))
更換您的來電nrow
。完整的表達式將是
by(m1, m1[,2:4], function(x) nrow(matrix(x,ncol=3)))
NROW函數在矩陣,數據框和向量上工作。
> NROW(1:3)
#[1] 3
您可以添加'SIMPLIFY = FALSE',你不會得到矢量的子集,而是nrow = 1的矩陣/ data.frames。 –