小编Tom*_*aso的帖子

如何显示R函数使用的.C例程的代码?

我正在研究包的一些功能rimage.例如,如果要查看sobel.h函数的代码,则可以获得:

> library(rimage)
> sobel.h
function (img) 
{
    w <- dim(img)[2]
    h <- dim(img)[1]
    imagematrix(abs(matrix(.C("sobel_h", as.double(img), as.integer(w), 
        as.integer(h), eimg = double(w * h), PACKAGE = "rimage")$eimg, 
        nrow = h, ncol = w)), noclipping = TRUE)
}
Run Code Online (Sandbox Code Playgroud)

因此该sobel.h函数使用被调用的C例程sobel_h((我认为)存储在文件中rimage.dll).

有没有办法看到sobel_h函数的C代码?

(我讲的rimage是一个实际例子的包;但答案当然会推广到所有使用.C例程的包).

r

11
推荐指数
2
解决办法
1556
查看次数

如何组织大R功能?

我正在写一个R函数,它变得非常大.它允许多种选择,我正在组织它:

myfun <- function(y, type=c("aa", "bb", "cc", "dd" ... "zz")){

   if (type == "aa") {
      do something
      - a lot of code here -
      ....
   }

   if (type == "bb") {
      do something
      - a lot of code here -
      ....
   }

   ....
}
Run Code Online (Sandbox Code Playgroud)

我有两个问题:

  1. 对于参数类型的每个选择,是否有更好的方法,以便不使用'if'语句?
  2. 为每个"类型"选择编写子函数是否更具功能性?

如果我写子功能,它看起来像这样:

myfun <- function(y, type=c("aa", "bb", "cc", "dd" ... "zz")){

   if (type == "aa") result <- sub_fun_aa(y)
   if (type == "bb") result <- sub_fun_bb(y)
   if (type == "cc") result <- sub_fun_cc(y)
   if (type …
Run Code Online (Sandbox Code Playgroud)

r function

9
推荐指数
2
解决办法
458
查看次数

如何从 .wav 文件中提取特定频率范围?

真的对声音处理新的,所以也许我的问题将是微不足道的。我想要做的是使用 R 从 wav 文件中提取特定的频率范围(假设为 150-400 Hz)。换句话说,我想创建另一个波形文件(wave2),其中仅包含我的频率分量指定(150 到 400 Hz,或其他什么)。

我在网上读了一些东西,我发现这可以通过 FFT 分析来完成,问题就来了。

假设我有这个代码:

library(sound)
s1 <- Sine(440, 1)
s2 <- Sine(880, 1)
s3 <- s1 + s2

s3.s <- as.vector(s3$sound)
  # s3.s is now a vector, with length 44100; 
  # bitrate is 44100 (by default)
  # so total time of s3 is 1sec.

  # now I calculate frequencies
N <- length(s3.s)   # 44100
k <- c(0:(N-1))
Fs <- 44100         # sampling rate
T <- N / Fs …
Run Code Online (Sandbox Code Playgroud)

audio r fft frequency-analysis

5
推荐指数
1
解决办法
4034
查看次数

R 中连续变量的 Tsallis 熵

离散变量的Tsallis 熵定义为:

H[p,q] = 1/(q-1) * (1 - sum(p^q))
Run Code Online (Sandbox Code Playgroud)

连续变量的 Tsallis 熵定义为:

H[p,q] = 1/(q-1) * (1 - int((p(x)^q dx)
Run Code Online (Sandbox Code Playgroud)

其中p(x)是数据的概率密度函数,并且int是积分。

我正在尝试在 R 中实现 Tsallis 熵。

假设我有以下数据(由 beta 函数生成,但考虑分布未知

set.seed(567)
mystring <- round(rbeta(500, 2,4), 2)
Run Code Online (Sandbox Code Playgroud)

离散变量的 Tsallis 熵为:

freqs <- table(mystring) / 500
q = 3
H1 <- 1/(q-1) * (1 - sum(freqs^q))
[1] 0.4998426
Run Code Online (Sandbox Code Playgroud)

我现在想要计算连续变量的 Tsallis 熵:

PDF <- density(mystring)
library(sfsmisc)
xPDF <- PDF$x
yPDF <- PDF$y
H1 <- 1/(q-1) * (1 …
Run Code Online (Sandbox Code Playgroud)

r entropy information-theory

5
推荐指数
1
解决办法
1091
查看次数

从较小的矩阵创建一个更大的矩阵

我有一个矩阵A,它是:

A <- matrix(c(1:15), byrow=T, nrow=5)
A
     [,1] [,2] [,3]
[1,]    1    2    3
[2,]    4    5    6
[3,]    7    8    9
[4,]   10   11   12
[5,]   13   14   15
Run Code Online (Sandbox Code Playgroud)

现在我想创建一个矩阵B,它是8x8维(或10x10,或15x15等),如下所示:

     [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8]
[1,]    1    2    3    0    0    0    0    0
[2,]    4    5    6    0    0    0    0    0
[3,]    7    8    9    0    0    0    0    0
[4,]   10   11   12    0    0    0    0    0
[5,]   13   14   15    0 …
Run Code Online (Sandbox Code Playgroud)

r matrix

3
推荐指数
2
解决办法
2308
查看次数

用于过滤列的 Google 电子表格功能

我有一个谷歌电子表格。在 Sheet2 中我有一些数据,在 Sheet3 中我想过滤 Sheet2 中的数据。具体来说,我希望在 Sheet3 中只收集包含特定变量的 Sheet2 的那些列。

见上图,这是Sheet2

表格1

我希望在 Sheet3 中只有第 6 行中包含关键字“Gaetano”的列。因此结果表将只包含 Sheet2 的 B 列和 C 列。

我阅读了很多关于 FILTER 函数的信息,但我仍然无法解决我的问题。

提前致谢。

google-api google-sheets google-spreadsheet-api

3
推荐指数
1
解决办法
1万
查看次数