小编mpe*_*tis的帖子

理性的计划者:不理解练习57

在练习(或输入?)57,我只是不理解逻辑是如何流动的.问题是这个:给定

(define teacupo
  (lambda (x)
    (conde
      ((= tea x ) #s)
      ((= cup x ) #s)
      (else #u))))
Run Code Online (Sandbox Code Playgroud)

其中'='实际上是三栏统一(?)运算符.运行以下内容:

(run* (r)
  (fresh (x y)
    (conde
      ((teacupo x) (= #t y) #s)
      ((= #f x) (= #t y))
      (else #u)
    (= (cons x (cons y ())) r)))
Run Code Online (Sandbox Code Playgroud)

这本书给出了答案:

((tea #t) (cup #t) (#f #t))
Run Code Online (Sandbox Code Playgroud)

我原以为答案应该是:

(((tea cup) #t) (#f #t))
Run Code Online (Sandbox Code Playgroud)

我的理由是(茶杯x)中的'x'应首先通过其所有解决方案,并统一到其所有解决方案的列表中.但似乎茶杯一次只放弃其中一种解决方案.这让我很困惑,因为我对conde的解释是,使用它给出的规则,你应该通过conde的行,并且在一行成功之后,假装它失败了,刷新变量并找到成功的下一行.考虑到解决方案的工作方式,似乎代码中的conde会回到成功的行,然后迫使teaupo conde失败并放弃下一个可能的值.再说一遍,我原以为茶杯解决方案会放弃列表中的所有conde解决方案,然后继续进行外部conde调用.任何人都可以向我提供指导,说明为什么它按照书中提供的方式工作而不是我推理的方式?

logic scheme racket minikanren

5
推荐指数
2
解决办法
191
查看次数

根据现有数据框为read_csv创建col_types字符串规范

我有一个脚本中的data.frame或tibble,它们被写入CSV文件。在另一个脚本中,该相同的CSV文件被读取到data.frame或tibble中。通过使用read_csv()带有col_types=参数的,我可以指定要读取的列类型。这是一个示例:

# Create an example dataframe
df <- tibble::tibble(a=1L
                     , b=1.0
                     , c="a"
                     , d=TRUE
                     , e=lubridate::ymd_hms("2019-03-19T13:15:18Z")
                     , f=lubridate::ymd("2019-03-19")
                     , g=factor("a"))

# Write csv to file
readr::write_csv(df, "temp.csv")

# read it back in, supplying a col_types string spec
readr::read_csv("temp.csv", col_types="idclTDf")
#> # A tibble: 1 x 7
#>       a     b c     d     e                   f          g    
#>   <int> <dbl> <chr> <lgl> <dttm>              <date>     <fct>
#> 1     1     1 a     TRUE  2019-03-19 13:15:18 2019-03-19 a
Run Code Online (Sandbox Code Playgroud)

reprex软件包(v0.2.1)创建于2019-03-19 …

r readr

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

函数`dist`在缺少值的向量上表现不正常

编辑:我想,从下面我和@joran的讨论中,@ joran帮助我弄清楚如何 dist改变距离值(它似乎是通过值[总尺寸]/[非缩放坐标的平方和 - 丢失尺寸],但这只是猜测).如果有人知道的话,我想知道的是:那是真的发生了什么?如果是这样,为什么这被认为是合理的事情呢?是否可以,或者应该有选择以dist我提出的方式计算它(这个问题可能是模糊的或固执的性质来回答).

我想知道dist函数如何在具有缺失值的向量上实际工作.下面是一个重新创建的例子.我使用dist函数和更基本的实现我认为应该是欧几里德距离与sqrt,sum和powers的定义.我还期望,如果任一向量的一个组成部分NA,那个维度将被抛出总和,这就是我实现它的方式.但是你可以看到那个定义不符合dist.

我将使用我的基本实现来处理NA值,但我想知道dist当向量具有什么时实际到达值NA,以及为什么它不符合我在下面如何计算它.我认为我的基本实现应该是默认/常用的,我无法弄清楚dist使用什么替代方法来获得它所获得的内容.

谢谢,马特

v1 <- c(1,1,1)
v2 <- c(1,2,3)
v3 <- c(1,NA,3)

# Agree on vectors with non-missing components
# --------------------------------------------
dist(rbind(v1, v2))
#          v1
# v2 2.236068

sqrt(sum((v1 - v2)^2, na.rm=TRUE))
# [1] 2.236068



# But they don't agree when there is a missing component
# Under what logic does sqrt(6) make sense as …
Run Code Online (Sandbox Code Playgroud)

r

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

ROracle:在MacOSX 10.8(Mountain Lion)上安装64位

我在Mac OSX 10.8.5上安装了64位R(R版本2.15.2(2012-10-26) - "捣蛋"),并安装了Oracle的Oracle Instantclient版本11.2.0.3.0.我已经获得了sqlplus,以及Perl和Python来运行这些.现在我正在尝试构建ROracle.它需要从源代码构建,所以我下载并尝试运行:

R CMD INSTALL ROracle_1.1-10.tar.gz
Run Code Online (Sandbox Code Playgroud)

但是,我认为它期望与Instant Client给我的目录结构不同.例如,当我尝试运行该命令时,我得到:

$ R CMD INSTALL ROracle_1.1-10.tar.gz
* installing to library ‘/Library/Frameworks/R.framework/Versions/2.15/Resources/library’
* installing *source* package ‘ROracle’ ...
** package ‘ROracle’ successfully unpacked and MD5 sums checked
configure: error: "/Applications/instantclient_11_2/lib" directory does not exist
ERROR: configuration failed for package ‘ROracle’
* removing ‘/Library/Frameworks/R.framework/Versions/2.15/Resources/library/ROracle’
Run Code Online (Sandbox Code Playgroud)

确实,我的'/ Applications/instantclient_11_2'目录中没有'lib'目录.但是我尝试通过创建一个并链接到'/ Applications/instantclient_11_2'目录中的.dylib文件来伪造它,然后我将错误传递给新的:

$ R CMD INSTALL ROracle_1.1-10.tar.gz
* installing to library ‘/Library/Frameworks/R.framework/Versions/2.15/Resources/library’
* installing *source* package ‘ROracle’ ...
** package ‘ROracle’ successfully unpacked and MD5 sums …
Run Code Online (Sandbox Code Playgroud)

oracle macos r

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

Leiningen:在OSX Mountain Lion上安装问题

更新:

我通过'homebrew'安装并更新(见这个问题的评论),所以我的最终问题已经解决,但我在这里发布的特定问题仍然是开放的,但我并不关心,因为'自制软件'解决方案绕过了它我.感谢Diego Basch的建议.


我正在尝试按照shell脚本的说明安装leinigen:http://leiningen.org/ .我下载了`lein'脚本并执行但是出现了以下错误:

[/usr/local/bin (git:master) ] $ ./lein.sh 
Could not find artifact lein-newnew:lein-newnew:jar:0.3.7
This could be due to a typo in :dependencies or network issues.
Could not resolve dependencies
Run Code Online (Sandbox Code Playgroud)

我在stackexchange上找到的最接近的答案是:在Mac OS X中安装Leiningen 2.X.

但这没有帮助.在解决此问题时,我们非常感谢您的帮助

谢谢,

马特

macos installation clojure leiningen

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

仅从 lm() 调用中提取预测函数

我可以通过将 的输出分配lm()给一个名称来生成拟合线性模型的预测,例如fit_lm,然后使用predict()该拟合生成对新数据的预测(参见下面的 reprex)。

通过大回归,lm()对象可能会变大,因为它们携带适合它们的原始数据以及其他一些潜在的大数据。当我在许多数据集上以自动化方式执行此操作时,单个lm对象可能会占用大量空间,而我不想随身携带整个lm对象。我想从我可以存储和用于预测的拟合中提取一个预测函数。有没有一种简单的方法可以从拟合中提取/构建一个进行预测的函数?在我的 reprex 注释的最底部是我如何设想代码工作的一个例子。

# Do a lm fit
set.seed(1234)
df <- data.frame(x = 1:9, y = 2 * 1:9 + 3 + rnorm(9, sd = 0.5))
fit <- lm(y ~ x, df)
summary(fit)
#> 
#> Call:
#> lm(formula = y ~ x, data = df)
#> 
#> Residuals:
#>     Min      1Q  Median      3Q     Max 
#> -1.0125 -0.1178 -0.1007  0.3780  0.6995 
#> 
#> Coefficients:
#>             Estimate …
Run Code Online (Sandbox Code Playgroud)

r

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

标签 统计

r ×4

macos ×2

clojure ×1

installation ×1

leiningen ×1

logic ×1

minikanren ×1

oracle ×1

racket ×1

readr ×1

scheme ×1