标签: seq

在R中向量化rep和seq

我想完成两件事.首先,如果我有一个向量,1:5我想得到一个矩阵(或两个向量),表示这些元素的唯一组合,包括两倍相同的数字,但不包括重复.

现在我可以使用矩阵来做到这一点:

foo <- matrix(1:5,5,5)
cbind(foo[upper.tri(foo,diag=TRUE)],foo[lower.tri(foo,diag=TRUE)])
      [,1] [,2]
 [1,]    1    1
 [2,]    1    2
 [3,]    2    3
 [4,]    1    4
 [5,]    2    5
 [6,]    3    2
 [7,]    1    3
 [8,]    2    4
 [9,]    3    5
[10,]    4    3
[11,]    1    4
[12,]    2    5
[13,]    3    4
[14,]    4    5
[15,]    5    5
Run Code Online (Sandbox Code Playgroud)

但必须有一个更简单的方法.我试图用Vectorize的seq,但是这给了我一个错误:

cbind(Vectorize(seq,"from")(1:5,5),Vectorize(seq,"to")(5,1:5))
    Error in Vectorize(seq, "from") : 
      must specify formal argument names to vectorize
Run Code Online (Sandbox Code Playgroud)

我要做的第二件事是如果我有一个包含向量的列表bar,以获得一个包含重复列表元素的向量,该向量等于该元素中元素的数量.我可以这样做:

unlist(apply(rbind(1:length(bar),sapply(bar,length)),2,function(x)rep(x[1],x[2])))
 [1] 1 1 …
Run Code Online (Sandbox Code Playgroud)

r vectorization seq

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

如何从序列的迭代中提前返回?

给定谓词"p",它表示解决方案是否足够好.成本函数"f"表示可能的解决方案有多好,以及在一系列可能的解决方案中搜索"最佳"(即最低成本)解决方案的函数.如何取消评估的惯用方法 - 如果谓词确保当前解决方案"足够好" - 看起来像.

即是这样的:

let search p f solutionSpace =
    solutionSpace |> Seq.map (fun x -> f x, x)
                  |> Seq.ignoreAllFollowingElementsWhenPredicateIsTrue (fun (c, s) -> p c)
                  |> Seq.minBy (fun (c, _) -> c)
Run Code Online (Sandbox Code Playgroud)

f# sequences escaping seq

4
推荐指数
1
解决办法
376
查看次数

clojure:如何将jdbc4array转换为clojure的seq?

我试图用jdbc从数据库中查询数据.问题是某些列是数组类型.

;get that particular column
(def jdbc-array (with-connection *db*                                                                    
                  (with-query-results rs ["select * from refgene limit 5"]                                        
                    (:exonstarts (first rs)))))

;Check if it has a value
(print jdbc-array)
;#<Jdbc4Array {67075873,67078739,67085754,67100417,67109640,67113051,67129424,67131499,67143471,67162932}>nil

;check class
(class jdbc-array)
;org.postgresql.jdbc4.Jdbc4Array
Run Code Online (Sandbox Code Playgroud)

如何在clojure中将此数组转换为seq/vector?我试过(seq jdbc-array)和(seq(.getArray jdbc-array)但两者都不起作用...

postgresql clojure seq

4
推荐指数
1
解决办法
2098
查看次数

在erlang中模拟范围(L,N)

一大早和Erlang一起玩我得到了一个奇怪的结果:

   -module(bucle01).

   -compile(export_all).

   for(N) when N >=0 ->

                lists:seq(1,N).


   for(L,N) when L =< N ->

                lists:seq(L,N);

   for(L,N) when L > N ->

                lists:reverse(for(N,L)).
Run Code Online (Sandbox Code Playgroud)

当我运行程序时,我看到了这个:

> bucle01:for(1,10).

[1,2,3,4,5,6,7,8,9,10]

> bucle01:for(10,1).

[10,9,8,7,6,5,4,3,2,1]

>bucle01:for(7,10).

[7,8,9,10]

>bucle01:for(8,10).

"\b\t\n"                %% What's that !?!

>bucle01:for(10,8).

"\n\t\b"               %% After all  it has some logic !
Run Code Online (Sandbox Code Playgroud)

任何"Kool-Aid"到"不要喝太多"请?

erlang list range seq

4
推荐指数
1
解决办法
966
查看次数

在Clojure中克隆seq

我如何懒惰地"克隆"Clojure中的seq.有点像

(let [[s1 s2] (clone-seq s)]
 ...)
Run Code Online (Sandbox Code Playgroud)

这样s1和s2是由s支持的独立seqs?

clojure seq

4
推荐指数
1
解决办法
304
查看次数

编写性能scala不可变集合

快问.我目前正在设计一些数据库查询,以便将相当大但不是大量的数据集提取到内存中,比如大约10k-100k的记录.

到目前为止,我一直在测试将这些结果集加载到scala.collection.immutable.Seq中,并发现它似乎花费了相当长的时间来构建集合.然而,如果我更改为Vector或List,则写入内存只需几分之一秒.

我的问题是,为什么Seq在这种情况下如此缓慢?如果是这样,在什么情况下使用Seq比Vector更合适?

谢谢

collections scala seq

4
推荐指数
1
解决办法
1392
查看次数

在R中按组向数据帧添加索引(或计数器)

我有一个像

ProjectID Dist
  1        x
  1        y
  2        z
  2        x
  2        h
  3        k
  ....     ....
Run Code Online (Sandbox Code Playgroud)

我想添加第三列,以便每个ProjectID都有一个递增计数器:

ProjectID Dist counter
  1        x     1
  1        y     2
  2        z     1
  2        x     2
  2        h     3
  1        k     3
  ....     ....
Run Code Online (Sandbox Code Playgroud)

我看了一下,seq rank还有其他一些地方,特别是看我是否可以使用ddply以帮助您:

df$counter <- ddply(df,.(projectID), function(x).....? )
Run Code Online (Sandbox Code Playgroud)

我想我可以调整此答案如何按组创建计数器/计数?但是更喜欢使用ddply之类的东西(我找不到与cumsum等效的东西,但是我认为这是相同的原理:在Pandas中按组创建整数递增的序列)。那会让我索引列表中的出现(例如在此列表上合并)。

indexing counter r plyr seq

4
推荐指数
1
解决办法
4788
查看次数

F#的名单是急切或懒惰的评估?或者只有"seq"在F#中进行延迟评估

F#中的哪些元素是惰性评估的,哪些元素是急切评估的?据我所知,如果"seq"是懒惰的评估,它是否意味着"列表"是急切评估的?我是如何证明的?谢谢

evaluation f# list lazy-evaluation seq

4
推荐指数
1
解决办法
524
查看次数

非抛出版本的Seq.exactlyOne来测试单例序列

更新:我为此创建了一个UserVoice请求:展开Seq的基数函数.

我需要功能Seq.exactlyOne,但有Some/None语义.换句话说,我需要Seq.head,或者,如果序列为空或包含多个项目,我什么都不需要.使用Seq.exactlyOne会抛出这种情况.

我不认为有一种内置的方式来获得这个(虽然它听起来如此微不足道,以至于人们会期望有一个对应物Seq.singleton).我想出了这个,但感觉很复杂:

let trySingleton sq = 
    match Seq.isEmpty sq with 
    | true -> None 
    | false -> 
        match sq |> Seq.indexed |> Seq.tryFind (fst >> ((=) 1)) with
        | Some _ -> None
        | None -> Seq.exactlyOne sq |> Some
Run Code Online (Sandbox Code Playgroud)

得到:

> trySingleton [|1;2;3|];;
val it : int option = None
> trySingleton Seq.empty<int>;;
val it : int option = None
> trySingleton [|1|];;
val it : int …
Run Code Online (Sandbox Code Playgroud)

singleton f# sequence seq

4
推荐指数
1
解决办法
172
查看次数

类型定义中的Seq约束

此类型定义有效:

type Model<'t,'u when 't :> seq<'u> >(query: unit -> 't) = class end
Run Code Online (Sandbox Code Playgroud)

但是,对我来说,'u这里是多余的,但下一个定义是:

type Model<'t when 't :> seq<_> >(query: unit -> 't) = class end
Run Code Online (Sandbox Code Playgroud)

产生错误:

此声明中不允许使用匿名类型变量- F# Compiler (715)

紧凑

最紧凑的形式:

type Model<'t>(query:unit -> #seq<'t>) = class end
Run Code Online (Sandbox Code Playgroud)

在实例创建过程中:

Query.users |> Model
Run Code Online (Sandbox Code Playgroud)

产生错误:

类型约束不匹配。类型unit -> (string * int) list
与类型不兼容unit -> 'a
F# Compiler (193)

可能是由于此处所述,为什么记录类型定义中不允许使用灵活类型?。但是无论如何,错误说明对我来说还是不清楚的,用(string * int) list代替代替有'a什么问题?

背景

实类型Model是数据库查询的包装,它实现INotifyPropertyChanged并包含mutable …

f# seq

4
推荐指数
1
解决办法
110
查看次数