我正在尝试学习如何使用这些apply()功能。
假设我们有一个 3 行 2 列的矩阵test <- matrix(c(1,2,3,4,5,6), ncol = 2),并且我们希望第一列 (1, 2, 3) 中每个元素的最大值不超过 2,因此我们最终得到一个矩阵 (1 ,2,2,4,5,6)。
如何编写一个apply()函数来做到这一点?
这是我的最新尝试:test1 <- apply(test[,1], 2, function(x) {if(x > 2){return(x = 2)} else {return(x)}})
我们可以pmin在第一列上使用值 2 作为第二个参数,以便它对回收的 2 进行元素检查,并从第一列中获取每个值的最小值
test[,1] <- pmin(test[,1], 2)
Run Code Online (Sandbox Code Playgroud)
-输出
> test
[,1] [,2]
[1,] 1 4
[2,] 2 5
[3,] 2 6
Run Code Online (Sandbox Code Playgroud)
请注意,apply需要“X”作为数组/矩阵或带有dimensions 的数组/矩阵,当我们仅对单个列/行进行子集化时,它会删除维度,因为drop = TRUE默认情况下