这个问题更多地是关于 apply 函数中的 MARGIN 参数而不是任何东西。假设我想将以下矩阵乘以以下向量,以便我将第一个矩阵元素乘以第一个向量元素,第二个乘以第二个,依此类推。我使用以下代码:
matrix <- matrix(1:10)
vector <- c(10:19)
t(apply(matrix,2,'*',vector))
Run Code Online (Sandbox Code Playgroud)
返回一个非常干净的结果:
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
[1,] 10 22 36 52 70 90 112 136 162 190
Run Code Online (Sandbox Code Playgroud)
但是如果我改变 MARGIN = 2,我会得到这个结果:
matrix <- matrix(1:10)
vector <- c(10:19)
t(apply(matrix,1,'*',vector))
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
[1,] 10 11 12 13 14 15 16 17 18 19
[2,] 20 22 24 26 28 30 32 34 36 38
[3,] 30 33 …Run Code Online (Sandbox Code Playgroud) 我有数据框"a",它有一个名为"VAL"的变量.我想计算VAL值为23或24的元素.
我使用了两个有效的代码:
nrow(subset(a,VAL==23|VAL==24)
nrow(subset(a,VAL %in% c(23,24)))
Run Code Online (Sandbox Code Playgroud)
但是,我尝试了其他代码,它提供了意想不到的输出,我不知道为什么.
nrow(subset(a,VAL ==c(23,24)))
Run Code Online (Sandbox Code Playgroud)
即使我改变了23和24的顺序,它也会产生不同的意外输出.
nrow(subset(a,VAL ==c(24,23)))
Run Code Online (Sandbox Code Playgroud)
为什么这些代码不正确?他们到底在做什么?