小编dai*_*ish的帖子

Do 表示法和列表 monad

我正在学习哈斯克尔。

\n

我正在尝试查找列表中as与列表元素相加的元素bs,并将元素作为元组返回:

\n
findSum2 :: [Int] -> [Int] -> [(Int,Int,Int)]\nfindSum2 as bs = [(a, a', b) | a <- as, a' <- as, b <- bs, a + a' == b]\n
Run Code Online (Sandbox Code Playgroud)\n

该代码有效。但为了学习 Haskell,我尝试将其重写为do-notation:

\n
findSum2 :: [Int] -> [Int] -> [(Int,Int,Int)]\nfindSum2 as bs = do\n  a  <- as\n  a' <- as \n  b  <- bs\n  if a + a' == b then return (a, a', b) \n                 else return ()\n
Run Code Online (Sandbox Code Playgroud)\n

然后类型检查员向我抱怨: …

monads haskell list-comprehension list do-notation

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

Rcpp CharacterVector:为什么不是单个元素std :: strings?

这可能是一个愚蠢的问题,但我认为a的每个元素CharacterVector都是一个std::string.但是,这不起作用:

std::string hello(CharacterVector vec) {
   std::string result = vec[0];
   return result;
}
Run Code Online (Sandbox Code Playgroud)

错误:候选构造函数不可行:第一个参数没有已知的从'Proxy'(又名'string_proxy <16>')到'const_pointer'(又名'const char*')的转换

如果是这样的话,我们应该std::string在获得C++好东西等之前强制进行转换empty()

string r rcpp

6
推荐指数
1
解决办法
2462
查看次数

我如何实现这个特定结构的foldr?

我正在学习哈斯克尔。我有一个如下所示的列表:

data TwoValueList a = Empty | Node a a (TwoValueList a)
Run Code Online (Sandbox Code Playgroud)

我希望这样做Foldable,这样我就可以进行如下计算:

sum (Node 0 1 (Node 2 3 Empty)) --should produce 6
Run Code Online (Sandbox Code Playgroud)

如果只有一个值,那就很容易了:

data OneValueList = Empty | Node a (OneValueList a)
instance Foldable OneValueList where
  foldr f b Empty = b
  foldr f b (Node a rest) = f a (foldr f b rest)
Run Code Online (Sandbox Code Playgroud)

但是,如果一个节点内有两个值,我无法微调类型,因为f需要ab,但我必须应用于内的f两个值并以某种方式将它们组合起来。我是否缺少其他类型的约束?aTwoValueList

谢谢。

haskell

6
推荐指数
1
解决办法
124
查看次数

将对象函数传递给d3中的data()

http://bl.ocks.org/mbostock/1134768

嘿伙计们,我对JavaScript很新,我主要是学习使用d3来渲染数据.我试图了解上面代码中发生了什么,特别是在代码段中:

// Add a rect for each date
var rect = cause.selectAll("rect")
.data(Object) // THIS IS WEIRD TO ME....
.enter().append("svg:rect")
.attr("x", function(d) { return x(d.x); })
.attr("y", function(d) { return -y(d.y0) - y(d.y); })
.attr("height", function(d) { return y(d.y); })
.attr("width", x.rangeBand());
Run Code Online (Sandbox Code Playgroud)

Object构造函数在做什么.data()?我认为这data()将强制评估一个函数,所以实际上是在创建一个对象?为什么需要为每个数组的每个元素插入一个矩形causes

javascript d3.js

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

对于每列,计算它与其他列的最大值之间的差异

假设我有一个数据帧:

x <- data.frame(a=c(1,2,3), b=c(2,3,2), c=c(4,5,1))
#  a b c
#1 1 2 4
#2 2 3 5
#3 3 2 1
Run Code Online (Sandbox Code Playgroud)

对于每一列,我想计算它与其他列的最大值之间的差异:

# Desired result:
#    a   b   c
#1  -3  -2   2
#2  -3  -2   2
#3   1  -1  -2
Run Code Online (Sandbox Code Playgroud)

例如,对于(1,1)条目,它是1,因为对于第一行a = 1,和max(b,c) = 4,所以1 - 4 = -3.

请注意,我不一定知道前面数据框中的列数,因此可能会有任意多列.

r

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

d3.js:axisBottom 出现在顶部而不是

我正在尝试将 X 轴添加到我的 D3 (v5) 生成图的底部,如下所示。然而,X 轴出现在顶部,即使我调用axisBottom(). 我在某处犯了错误吗?

results = {
  x: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
  y: [10, 20, 30, 40, 50, 60, 70, 80, 90, 100],
  y1: [10, 20, 30, 40, 50, 60, 70, 80, 90, 100],
}

const W = 1000,
      H = 620,
      margin = {
        top: 20,
        right: 80,
        bottom: 30,
        left: 50,
      };

const width = W - margin.left - margin.right,
      height = H - margin.top …
Run Code Online (Sandbox Code Playgroud)

javascript visualization data-visualization axis-labels d3.js

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

哪个是适用于两个数字矩阵的权利?

假设我有1000个x观测值的向量,以及1000个观测值的向量y.每行x和每行y分别对应100个样本.

x <- t(replicate(1000, rnorm(100,mean=6)))
y <- t(replicate(1000, rnorm(100,mean=5)))
Run Code Online (Sandbox Code Playgroud)

我想进行一次测试,看看每行的平均值是否与每一行的平均值有x显着差异y.

哪个是apply在这种情况下使用的权利?理想情况下,它会是这样的:

Xapply(x,y, function(x,y) t.test(x,y)$conf.int)
Run Code Online (Sandbox Code Playgroud)

这甚至可能吗?

r apply

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