小编mb1*_*b14的帖子

与ggplot汇总/总和

有没有办法将数据与ggplot2?相加?

我想做一个气泡图,其大小取决于z的总和.

目前我正在做类似的事情

dd <- ddply(d, .(x,y), transform, z=sum(z))
qplot(x,y, data=dd, size=z)
Run Code Online (Sandbox Code Playgroud)

但我觉得我两次写同样的东西,我希望能写出一些东西

qplot(x,y, data=dd, size=sum(z))
Run Code Online (Sandbox Code Playgroud)

我一看stat_sumstat_summmary,但我不知道他们是合适的要么.

有可能ggplot2吗?如果没有,那么写出这两行的最佳方法是什么.

r ggplot2

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

是否有R函数使用单位前缀格式化数字

是否有R函数(或任何包)允许使用标准单位前缀(Kilo,Mega等...)格式化数字(整数),所以

10 -> 10
100 -> 1K
0.01 - > 10m
Run Code Online (Sandbox Code Playgroud)

等等......我可以自己做,但我宁愿不重新发明轮子.

r number-formatting

10
推荐指数
2
解决办法
2567
查看次数

红宝石中的穿插功能?

我正在寻找相当于Ruby中的haskell instersperse函数.基本上,在列表的每个元素之间添加一些东西(比如分隔符).

intersperse(nil, [1,2,3]) => [1,nil,2,nil,3,nil,4].
Run Code Online (Sandbox Code Playgroud)

我不是要求任何代码(我可以做到,我可能在你阅读这个问题之前已经完成了).我只是想知道标准Ruby平台上是否已经存在这样的功能.

更新

我不是要求任何代码,尤其是那些使用flatten的代码,因为它不起作用(flatten不仅平坦一个级别而且全部).我给出了示例[1,2,3]作为示例,但它应该可以使用

 [[1,2],[3,4]].interperse("hello") => [[1,2], "hello", [3,4]]
Run Code Online (Sandbox Code Playgroud)

(请不要向我发送任何代码以使其有效,我已经拥有它

class Array
  def intersperse(separator)
    (inject([]) { |a,v|  a+[v,separator] })[0...-1]
  end
end
Run Code Online (Sandbox Code Playgroud)

)

ruby

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

如何解决重叠实例

我有以下代码(转换类似于转换)

instance {-# OVERLAPS #-} Transformable a a where
  transform x = x

instance {-# OVERLAPPABLE #-} (Transformable l l',   Transformable r r' )
         => Transformable (Either l r) (Either l' r')
  where
    transform = bimap transform transform
Run Code Online (Sandbox Code Playgroud)

当然,这些情况在我试图改变的情况下重叠Either a bEither a b,并得到以下错误消息(ParsingError是一个类型别名Either something somethingElse)

    Overlapping instances for Transformable
                                (parsingerror text) (parsingerror text)
      arising from a use of ‘makereceipt’
    matching instances:
Matching instances:    Overlapping instances for Transformable
                            (ParsingError Text) (ParsingError Text)
  arising …
Run Code Online (Sandbox Code Playgroud)

haskell

9
推荐指数
1
解决办法
3257
查看次数

是Haskell适合统计分析

问题出在标题中.基本上我正在寻找R的替代品.我一直在使用R,有一些非常好的东西(特别是data.frame plyr和ggplot),但我真的很喜欢Haskell和类型推断,所以我是想知道使用Haskell进行"简单"统计分析是一个不错的选择.

我的基本需求是:

  • 读/写CSV
  • 导入SQL表
  • 对数据做一些基本的'mapReduce'.哪个R很棒,但我认为Haskell应该同样好.

然而,在处理真实世界数据之前,我对Haskell的体验一切正常.你总是遇到性能问题(并且很快),因为即使理论上你应该编写功能代码并且不担心计算机正在做什么,如果你不这样做并且不使用适当的库并且不是Haskell专家,东西很慢.

statistics haskell r

7
推荐指数
0
解决办法
3948
查看次数

HLint:使用&&&建议建议

我在一个小项目上运行了HLint,它建议我使用&&&.

示例:

>>> cat st.hs
f = (+) 10
g = (+) 1

main = print $ (\x -> (f x, g x)) 5
>>> hlint st.hs
st.hs:4:17: Warning: Use &&&
Found:
  \ x -> (f x, g x)
Why not:
  f Control.Arrow.&&& g

1 suggestion
Run Code Online (Sandbox Code Playgroud)

我理解这\x -> (f x, g x)是一种模式,并欣赏这个建议.但是Control.Arrow.&&&没有正常的功能而是箭头,所以我不能&&&按照建议使用.

那么在那种情况下推荐的方式是什么?

  • &&&在函数上定义我自己的运算符?
  • 使用箭头并做一些类似(arr f) &&& (arr g)但我甚至不知道如何评估它?
  • 在那个特殊的场合忽略Hlint.

haskell arrows hlint

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

如何在"平行"中组合镜头

我是新手Control.Lens,我正在尝试将2个镜头组合成"并行"(不是顺序),就像我对`Control.Arrow.&&&)一样.

如果我从lens文档中提取示例:

`data Foo a = Foo { _baz :: Int, _bar :: Int, a }
Run Code Online (Sandbox Code Playgroud)

我希望能够做到这样的事情:

>> let foo = (bar &&& baz) .~ (1, 20) $ Foo undefined undefined "FOO"
>> foo ^. (bar &&& baz) 
(1, 20)
Run Code Online (Sandbox Code Playgroud)

我到处寻找,我找不到办法.那是因为:

  • (&&&)与另一个名字存在,我错过了它.
  • 这毫无用处.我不应该需要它,因此没有人费心去实施它.
  • 以另一种方式做(使用both<*>)是微不足道的

更新

&&& 可以这样实现:

(/|\) :: Lens' f a -> Lens' f b -> Lens' f (a, b)
a /|\ b = lens getBoth setBoth where
    getBoth f = …
Run Code Online (Sandbox Code Playgroud)

haskell haskell-lens

7
推荐指数
2
解决办法
776
查看次数

元组和Record之间的自动转换

haskell中的记录或简单ADT几乎等同于盒装元组.有没有办法(理想情况下是一些花哨的扩展或来自haksell平台的lib)允许在这种类型和元组之间进行转换?

我(相当)是haskell的新手,我正在尝试在Haskell中构建一些报告工具.这涉及读/写csv文件和数据库表.使用元组的事情非常简单,但在使用普通类时需要一些锅炉板.样板接缝几乎完全相同,但我没有找到一个很好的方法只做一次,除了可能做转换(数据< - >元组)并使用从元组到CSV /表的本机转换.

更新

到目前为止我得到的所有答案都假定我需要一些完全通用的东西,我想要元组.我不想要元组,我元组,我不想要它们,因此需要转换它们.实际上我只想减少锅炉板(到0 :-)),但我不需要为每种类型都使用相同的功能.

例如,我可以通过展开其构造函数轻松地将元组转换为任何元素.问题是我需要uncurryN,我在任何地方都找不到(除了模板haskell教程).反过来更难做到.

我不是要求一个解决方案(尽管我得到的所有答案都很棒,因为我不熟悉Haskell中不同的元编程方式)但更多,因为我不喜欢重新发明轮子,如果轮子已经存在(例如,这个不连续的,可以用手写到20并包装在漂亮的包装中)

Updated2

显然存在一个不成熟的包,但它仍然解决了一半的问题.

haskell haskell-platform

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

如何使用可变数据在Haskell中有效地建模关系

我有类似的问题.但是,它涉及很多更新,我不确定IxSet是否是解决方案.

基本上我正在编写一个应用程序来优化仓库布局.没有数据库或任何东西; 它只是简单的数据来操作并在最后生成一个文件.仓库由不同尺寸的货架制成; 货架包含不同尺寸的箱子; 并且目标是找到最好的安排(或者至少是一个好的安排),在哪里放置盒子以便它们都适合.

基本模型(实际上并不重要)是:

data Dimension = Dimension {length::Double, width::Double, height::Double}
data Box = Box  {boxId :: Int,  boxDim:: Dimension }
data Shelf = Shelf {shelfId :: Int, shelfDim :: Dimension, postion :: ... }
Run Code Online (Sandbox Code Playgroud)

现在,第一个问题是有一个货架图.有些架子背靠背.我需要知道它,因为可以调整一个架子的深度(以相反的方式修改后架).我还需要知道对面的架子和下一个架子.

对此进行建模的最有效方法是什么?

我的第一个想法是:

data Shelf = Shelf { ... , backShelf :: Maybe Shelf 
                         , frontShelf :: Maybe Shelf
                         , nextShelf :: Maybe Shelf
                   }
Run Code Online (Sandbox Code Playgroud)

现在,数据在Haskell中是不可变的,那么如何更新Shelf?我的意思是,想象一下我有一份清单Shelf; 如果我修改一个,那么我需要更新它的所有副本?

我的第二个想法是使用id代替:

newtype ShelfId = Int
data Shelf = Shelf { …
Run Code Online (Sandbox Code Playgroud)

haskell

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

如何使用Applicative处理副作用?

我看到处处Applicative可以处理副作用,但我见过的所有简单例子都是将各种东西组合在一起,如:

> (,,) <$> [1,2] <*> ["a", "b", "c"] <*> ["foo", "bar"]
[(1,"a","foo"),(1,"a","bar"),(1,"b","foo"),(1,"b","bar"),
 (1,"c","foo"),(1,"c","bar"),(2,"a","foo"),(2,"a","bar"),
 (2,"b","foo"),(2,"b","bar"),(2,"c","foo"),(2,"c","bar")]
Run Code Online (Sandbox Code Playgroud)

哪个很酷,但我看不出它与副作用有何联系.我的理解是,它Applicative是一个弱单子,所以你可以处理副作用(就像你对State monad一样),但你不能重复使用前一个副作用的结果.

这是否意味着>>可以写出Applicative类似的东西

do
  print' "hello"
  print' "world"
Run Code Online (Sandbox Code Playgroud)

会有意义(有print' :: a -> Applicative something)(使用适当的do-applicative扩展名).

在另一个世界,之间的区别Monad,并ApplicativeMonad允许x <- ...,但Applicative没有.

然后,是作家monad,只是一个应用程序?

monads haskell applicative

6
推荐指数
2
解决办法
346
查看次数