小编Mat*_*erg的帖子

查找两个字符变量之间的公共子串

我有两个字符变量(对象的名称),我想提取最大的公共子字符串.

a <- c('blahABCfoo', 'blahDEFfoo')
b <- c('XXABC-123', 'XXDEF-123')
Run Code Online (Sandbox Code Playgroud)

我想要以下结果:

[1] "ABC" "DEF"
Run Code Online (Sandbox Code Playgroud)

作为输入的这些向量应该给出相同的结果:

a <- c('textABCxx', 'textDEFxx')
b <- c('zzABCblah', 'zzDEFblah')
Run Code Online (Sandbox Code Playgroud)

这些例子具有代表性.字符串包含标识元素,每个向量元素中的其余文本是常见的,但未知.

是否有解决方案,在以下某个地方(按优先顺序):

  1. 基地R.

  2. 推荐套餐

  3. CRAN上提供的软件包

假设重复的答案不符合这些要求.

r lcs

12
推荐指数
2
解决办法
5859
查看次数

有效地找到一个数字的所有除数

所以我只想找到给定数字的所有除数(除了数字本身).目前,我有这个:

public static List<int> proper_divisors(int x)
{
    List<int> toreturn = new List<int>();
    toreturn.Add(1);
    int i = 0;
    int j=1;
    int z = 0;
    while (primes.ElementAt(i) < Math.Sqrt(x))
    {
        if (x % primes.ElementAt(i) == 0)
        {
            toreturn.Add(primes.ElementAt(i));
            toreturn.Add(x / primes.ElementAt(i));
            j = 2;
            z = (int)Math.Pow(primes.ElementAt(i), 2);
            while (z < x)
            {
                if (x % z == 0)
                {
                    toreturn.Add(z);
                    toreturn.Add(x / z);
                    j++;
                    z = (int)Math.Pow(primes.ElementAt(i), j);
                }
                else
                {
                    z = x;
                }
            }
        }
        i++;
    }
    toreturn = …
Run Code Online (Sandbox Code Playgroud)

c# prime-factoring factorization

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

为矩阵的对角线条目赋值

我需要在for循环中访问并分配m*n矩阵的单个槽.到目前为止的代码:

rowCount <- 9
similMatrix = matrix(nrow = rowCount - 1, ncol = rowCount)
show(similMatrix)
for(i in (rowCount - 1)){
  for (j in rowCount)
    if (i == j){
      similMatrix[i == j] <- 0;
    }
}
show(similMatrix)
Run Code Online (Sandbox Code Playgroud)

因此,如果i = j,则矩阵中的NA值需要替换为0.

r matrix assign

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

熊猫滚动适用于缺少数据

我想对丢失的数据进行滚动计算.

示例代码:( 为了简单起见,我给出了滚动总和的示例,但我想做一些更通用的事情.)

foo = lambda z: z[pandas.notnull(z)].sum() 
x = np.arange(10, dtype="float")    
x[6] = np.NaN
x2 = pandas.Series(x)    
pandas.rolling_apply(x2, 3, foo)
Run Code Online (Sandbox Code Playgroud)

产生:

0   NaN    
1   NaN
2     3    
3     6    
4     9    
5    12    
6   NaN    
7   NaN    
8   NaN    
9    24
Run Code Online (Sandbox Code Playgroud)

我认为在"滚动"期间,计算中忽略了缺少数据的窗口.我希望得到一个结果:

0   NaN    
1   NaN    
2     3    
3     6    
4     9    
5    12    
6     9    
7    12    
8    15    
9    24
Run Code Online (Sandbox Code Playgroud)

python missing-data pandas rolling-computation

10
推荐指数
1
解决办法
6957
查看次数

如何将离散因子水平视为连续?

我有一个数据框,其中列最初标记为任意.稍后,我想将这些级别更改为数值.以下脚本说明了该问题.

library(ggplot2)
library(reshape2)

m <- 10
n <- 6

nam <- list(c(),letters[1:n])
var <- as.data.frame(matrix(sort(rnorm(m*n)),m,n,F,nam))
dtf <- data.frame(t=seq(m)*0.1, var)
mdf <- melt(dtf, id=c('t'))

xs <- c(0.25,0.5,1.0,2.0,4.0,8.0)
levels(mdf$variable) <- xs

g <- ggplot(mdf,aes(variable,value,group=variable,colour=t))
g +
    geom_point() +
    #scale_x_continuous() +
    opts()
Run Code Online (Sandbox Code Playgroud)

这个图是产生的.

在此输入图像描述

'变量'量在图上均匀分布,即使在数字上这不是真的.如何才能使x轴上的间距正确?

r ggplot2 dataframe r-factor

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

更快速地编译因子程序

我真的很喜欢因子语言.但是我发现用它编写的编译程序非常慢,因此使用Factor创建真正的项目是不可行的.

例如,在我的笔记本电脑上编译示例计算器WebApp大约需要5分钟(i3处理器,2GB RAM,运行Fedora 15).

我已经四处寻找,但找不到比使用解释器(主要因素二进制可执行文件)更快的编译因子程序的方法.

当您尝试仅为每次运行使用解释器而不是将程序"部署"到本机二进制文件(甚至不能在许多程序上工作)时,这会变得荒谬.这意味着每次我想运行计算器时,我都要等待5分钟的冷启动时间.

我想知道这是否是一个常见的问题,以及是否有一个很好的方法来解决它.

compilation factor-lang

8
推荐指数
1
解决办法
724
查看次数

在R的read.table()中指定多字符注释标记

是否可以在R中指定一个由多于1个符号组成的注释字符?

例如,

read.table("data.dat", comment.char="//") 
Run Code Online (Sandbox Code Playgroud)

不行.

comments r read.table

8
推荐指数
1
解决办法
770
查看次数

摆弄无点代码?

我一直在学习Factor和J语言来试验无点编程.这些语言的基本机制似乎很清楚,但是如何理解如何进行算法设计是一项挑战.

对我来说,一个特殊的混淆源是如何构造代码以便很容易地尝试不同的参数.通过这个,我的意思是Mathematica和Matlab如此擅长的事情; 你设置了一个算法然后操纵变量并观察发生了什么.

没有显式变量,你怎么做?也许我在想这一切都错了.我应该如何在无点编程中实现这一点?

functional-programming j pointfree tacit-programming factor-lang

7
推荐指数
1
解决办法
538
查看次数

通过点阵中的点绘制二次样条

基于这个伟大的问题:如何绘制通过某些点的平滑曲线

如何在格子中做到这一点?

plot(rnorm(120), rnorm(120), col="darkblue", pch=16, xlim=c(-3,3), ylim=c(-4,4))
points(rnorm(120,-1,1), rnorm(120,2,1), col="darkred", pch=16)
points(c(-1,-1.5,-3), c(4,2,0), pch=3, cex=3)
xspline(c(-1,-1.5,-3), c(4,2,0), shape = -1)
Run Code Online (Sandbox Code Playgroud)

看起来应该是这样的:

这是类似的数据,格式更合适的lattice情节:

dat <- data.frame(x=c(rnorm(120), rnorm(120,-1,1)),
                  y=c(rnorm(120), rnorm(120,2,1)),
                  l=factor(rep(c('B','R'),each=120))
)
spl <- data.frame(x=c(-1,-1.5,-3), 
                  y=c(4,2,0)
)
Run Code Online (Sandbox Code Playgroud)

以下是链接问题给出的内容,翻译为lattice:

xyplot(y ~ x,
       data=dat,
       groups=l,
       col=c("darkblue", "darkred"),
       pch=16,
       panel = function(x, y, ...) {
         panel.xyplot(x=spl$x, y=spl$y, pch=3, cex=3)
         ## panel.spline(x=spl$x, y=spl$y)              ## Gives an error, need at least four 'x' values
         panel.superpose(x, y, ...,
                         panel.groups = function(x, y, ...) …
Run Code Online (Sandbox Code Playgroud)

r lattice

7
推荐指数
1
解决办法
1072
查看次数

R中%函数的递归%?

我确信这是一个多次被问到的简单问题,但这是我发现很难知道要搜索哪些术语以便找到解决方案的时候之一.我有一个简单的列表列表,如下面的列表:

sets <- list(S1=NA, S2=1L, S3=2:5)

> sets
$S1
[1] NA

$S2
[1] 1

$S3
[1] 2 3 4 5
Run Code Online (Sandbox Code Playgroud)

我有一个标量变量val,可以取任何整数的值sets(但永远不会NA).假设val <- 4- 那么,返回一个TRUE/FALSE向量的快速方法是什么,set其中TRUE表示val在该列表中的每个列表,而FALSE表示不是?在这种情况下,我想要的东西

[1] FALSE FALSE  TRUE
Run Code Online (Sandbox Code Playgroud)

我希望会有一些递归的形式,%in%但我没有运气寻找它.谢谢!

recursion r pattern-matching

7
推荐指数
1
解决办法
149
查看次数