在R中应用函数族
我在这种形式下有一个双循环:在R中应用函数族,r,for-loop,apply,R,For Loop,Apply,我在这种形式下有一个双循环: for (j in 1:col(mat)) { for (i in 1:nrow(mat)) { decision[i][j] = ifelse(mat[i][j] > 3, 1, 0) } } 有没有任何方法可以通过其中一个速度显著提高的应用函数来实现此功能?R是一种矢量化语言,因此对于矩阵的这种简单操作,不需要应用类型函数,只需执行以下操作: decision <- ifelse(mat > 3, 1,
for (j in 1:col(mat))
{
for (i in 1:nrow(mat))
{
decision[i][j] = ifelse(mat[i][j] > 3, 1, 0)
}
}
有没有任何方法可以通过其中一个速度显著提高的应用函数来实现此功能?R是一种矢量化语言,因此对于矩阵的这种简单操作,不需要应用类型函数,只需执行以下操作:
decision <- ifelse(mat > 3, 1, 0)
决定3,1,0)
(我假设你想迭代矩阵的元素,这意味着你会说循环中的
ncol(mat)
;col
给出了一些非常不同的东西)。R是一种矢量化语言,因此对于矩阵的这种简单操作应用类型函数是不需要的,只需执行以下操作:
decision <- ifelse(mat > 3, 1, 0)
决定3,1,0)
(我假设你想迭代矩阵的元素,这意味着你会说循环中的ncol(mat)
;col
给出了一些非常不同的东西)。R是一种矢量化语言,因此对于矩阵的这种简单操作应用类型函数是不需要的,只需执行以下操作:
decision <- ifelse(mat > 3, 1, 0)
决定3,1,0)
(我假设你想迭代矩阵的元素,这意味着你会说循环中的ncol(mat)
;col
给出了一些非常不同的东西)。R是一种矢量化语言,因此对于矩阵的这种简单操作应用类型函数是不需要的,只需执行以下操作:
decision <- ifelse(mat > 3, 1, 0)
决定3,1,0)
(我假设你想迭代矩阵的元素,这意味着你会在循环中说ncol(mat)
;col
给出了一些完全不同的东西)。你不需要任何循环。如果您创建一个如下所示的矩阵
mat<-matrix(sample(1:10, 5*7, replace=T), ncol=7)
# [,1] [,2] [,3] [,4] [,5] [,6] [,7]
#[1,] 9 6 10 7 6 10 6
#[2,] 7 6 3 3 6 8 3
#[3,] 7 9 7 5 6 7 6
#[4,] 2 3 8 6 10 1 5
#[5,] 4 1 5 6 1 10 6
mat您不需要任何循环。如果您创建一个如下所示的矩阵
mat<-matrix(sample(1:10, 5*7, replace=T), ncol=7)
# [,1] [,2] [,3] [,4] [,5] [,6] [,7]
#[1,] 9 6 10 7 6 10 6
#[2,] 7 6 3 3 6 8 3
#[3,] 7 9 7 5 6 7 6
#[4,] 2 3 8 6 10 1 5
#[5,] 4 1 5 6 1 10 6
mat您不需要任何循环。如果您创建一个如下所示的矩阵
mat<-matrix(sample(1:10, 5*7, replace=T), ncol=7)
# [,1] [,2] [,3] [,4] [,5] [,6] [,7]
#[1,] 9 6 10 7 6 10 6
#[2,] 7 6 3 3 6 8 3
#[3,] 7 9 7 5 6 7 6
#[4,] 2 3 8 6 10 1 5
#[5,] 4 1 5 6 1 10 6
mat您不需要任何循环。如果您创建一个如下所示的矩阵
mat<-matrix(sample(1:10, 5*7, replace=T), ncol=7)
# [,1] [,2] [,3] [,4] [,5] [,6] [,7]
#[1,] 9 6 10 7 6 10 6
#[2,] 7 6 3 3 6 8 3
#[3,] 7 9 7 5 6 7 6
#[4,] 2 3 8 6 10 1 5
#[5,] 4 1 5 6 1 10 6
马特为了澄清,存在+0
是为了将TRUE
和FALSE
的逻辑结果更改为数字结果(请在不使用+0
的情况下尝试查看)。谢谢@John,这对我来说是新的。好的知识要澄清的是,+0
的存在是为了将TRUE
和FALSE
的逻辑结果更改为数字结果(在不使用+0
的情况下尝试)。谢谢@John,这对我来说是新的。好的知识要澄清的是,+0
的存在是为了将TRUE
和FALSE
的逻辑结果更改为数字结果(在不使用+0
的情况下尝试)。谢谢@John,这对我来说是新的。好的知识要澄清的是,+0
的存在是为了将TRUE
和FALSE
的逻辑结果更改为数字结果(在不使用+0
的情况下尝试)。谢谢@John,这对我来说是新的。另外,要访问R中矩阵
(或数据.frame
)的第i行和第j列,您需要执行[i,j]
非[i][j]
。此外,要访问R中矩阵
(或数据.frame
)的第i行和第j列,您还需要执行[i,j]
非[i][j]/code>,要访问R中矩阵
(或data.frame
)的第i行和第j列,您需要执行[i,j]
非[i][j]
。此外,要访问R中矩阵
(或data.frame
)的第i行和第j列,您需要执行[i,j]/code>非[i][j]/code>。