欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

R語言which函數(shù)介紹及Rcpp改寫詳解

 更新時間:2022年07月11日 09:47:06   作者:嘛里嘛里哄  
有的時候我們需要找到一個數(shù)據(jù)子向量中的位置,我們就可以使用which函數(shù),下面這篇文章主要給大家介紹了關(guān)于R語言which函數(shù)介紹及Rcpp改寫的相關(guān)資料,需要的朋友可以參考下

引言

首先來介紹一下R語言which函數(shù)的作用:which函數(shù)在向量、矩陣、數(shù)據(jù)框,列表、因子這些數(shù)據(jù)結(jié)構(gòu)中有這重要的作用,可以查找特定的元素返回其在數(shù)據(jù)中的索引,因此非常方便操作數(shù)據(jù)。

which 函數(shù)的介紹

which函數(shù)中的參數(shù):

function (x, arr.ind = FALSE, useNames = TRUE)

which函數(shù)的源碼:

which <- function(x, arr.ind = FALSE, useNames = TRUE)
{
wh <- .Internal(which(x))
if (arr.ind && !is.null(d <- dim(x)))
arrayInd(wh, d, dimnames(x), useNames=useNames) else wh
}
arrayInd <- function(ind, .dim, .dimnames = NULL, useNames = FALSE) {
##-- return a matrix length(ind) x rank == length(ind) x length(.dim)
m <- length(ind)
rank <- length(.dim)
wh1 <- ind - 1L
ind <- 1L + wh1 %% .dim[1L]
dnms <- if(useNames) {
list(.dimnames[[1L]][ind],
if(any(nzchar(nd <- names(.dimnames)))) nd else
if(rank == 2L) c(“row”, “col”) # for matrices
else paste0(“dim”, seq_len(rank)))
}
ind <- matrix(ind, nrow = m, ncol = rank, dimnames = dnms)
if(rank >= 2L) {
denom <- 1L
for (i in 2L:rank) {
denom <- denom * .dim[i-1L]
nextd1 <- wh1 %/% denom # (next dim of elements) - 1
ind[,i] <- 1L + nextd1 %% .dim[i]
}
}
storage.mode(ind) <- “integer”
ind
}

供給想改進的同學(xué)學(xué)習!

which函數(shù)的一些小例子

1

x <- sample(1:10,25,T)

x的值: 10 9 3 10 9 9 10 10 3 10 7 9 9 7 2 4 2 8 8 5 4 7 3 8 4

which(x == 10)

10在向量x中的位置:1 4 7 8 10

給向量x命名,測試一下useNames = TRUE是否起作用!

names(x) <- letters[1:25]
which(x == 10,useNames = FALSE)
which(x == 10,useNames = TRUE)

然而并沒有什么卵用!

2

a <- matrix(rep(1:3,times = c(3,3,3)),3,3)
which(a == 1,arr.ind = T)
which(a == 1,arr.ind = F)
which(a == 1,arr.ind = T,useNames = TRUE)
which(a == 1,arr.ind = F,useNames = FALSE)

結(jié)果:

which函數(shù)的改進以及時間對比

針對向量版本的我這里就不展示了!

根據(jù)矩陣中的某個元素返回其在矩陣中的位置!

Rcpp代碼

sourceCpp(code = '
            #include <RcppArmadillo.h>
         //[[Rcpp::depends("RcppArmadillo")]]
         //[[Rcpp::export]]
       arma::mat whicha(arma::mat matrix,int what){
          arma::uvec out;//查找索引值
          out = find(matrix == what);//查找索引值(從0開始)
          int n = matrix.n_rows; //行數(shù)
          int nl = out.n_elem; //查找元素總數(shù)
          
          arma::vec foo;
          arma::mat out1(nl,2);  //輸出矩陣
          
       foo = arma::conv_to<arma::vec>::from(out); //查找值所在的向量索引
        out1.col(1) = floor(foo / n)+1;
        for(int i = 0;i < nl;i++){
            out1(i,0) = floor(out(i) % n)+1;}
        return out1;  }   ')

時間對比:

library(microbenchmark)

microbenchmark(which(z == 1,arr.ind = T),
               whicha(z,1) )

總結(jié)

到此這篇關(guān)于R語言which函數(shù)介紹及Rcpp改寫的文章就介紹到這了,更多相關(guān)R語言which函數(shù)詳解內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • R包clusterProfiler如何安裝成功(新手必看!)

    R包clusterProfiler如何安裝成功(新手必看!)

    最近在我以為ClusterProfiler已經(jīng)安裝好的時候,又遇到了一些問題,所以這篇文章主要給大家介紹了關(guān)于R包clusterProfiler如何安裝成功的相關(guān)資料,需要的朋友可以參考下
    2023-02-02
  • R studio 批量注釋的快捷方式

    R studio 批量注釋的快捷方式

    這篇文章主要介紹了R studio 批量注釋的快捷方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-04-04
  • R語言常用兩種并行方法之snowfall詳解

    R語言常用兩種并行方法之snowfall詳解

    這篇文章主要為大家介紹了R語言常用兩種并行方法之snowfall詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2021-11-11
  • R語言拼接字符串_paste的用法說明

    R語言拼接字符串_paste的用法說明

    這篇文章主要介紹了R語言拼接字符串_paste的用法說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-04-04
  • R語言學(xué)習之字符串和時間格式化詳解

    R語言學(xué)習之字符串和時間格式化詳解

    這篇文章主要為大家詳細介紹了R語言中字符串和時間格式化的相關(guān)知識,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學(xué)習一下
    2023-03-03
  • R語言學(xué)習筆記之lm函數(shù)詳解

    R語言學(xué)習筆記之lm函數(shù)詳解

    這篇文章主要介紹了R語言學(xué)習筆記之lm函數(shù)詳解,本文給大家介紹的非常詳細,對大家的學(xué)習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-03-03
  • R語言使用ggplot繪制畫中畫細節(jié)放大的方法

    R語言使用ggplot繪制畫中畫細節(jié)放大的方法

    這篇文章主要為大家介紹了R語言使用ggplot繪制畫中畫細節(jié)放大的方法實現(xiàn)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步
    2021-11-11
  • R語言繪制折線圖實例分析

    R語言繪制折線圖實例分析

    在本篇文章里小編給大家整理了一篇關(guān)于R語言繪制折線圖實例分析內(nèi)容,有需要的小伙伴可以跟著學(xué)習參考下。
    2021-04-04
  • R語言 實現(xiàn)輸出九九乘法表

    R語言 實現(xiàn)輸出九九乘法表

    這篇文章主要介紹了R語言 實現(xiàn)輸出九九乘法表,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-03-03
  • R語言中時間序列分析淺析

    R語言中時間序列分析淺析

    在本篇文章里小編給大家整理的是一篇關(guān)于R語言中時間序列分析淺析內(nèi)容,有需要的朋友們跟著學(xué)習下。
    2021-05-05

最新評論