在练习(或输入?)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调用.任何人都可以向我提供指导,说明为什么它按照书中提供的方式工作而不是我推理的方式?
我有一个脚本中的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 …
编辑:我想,从下面我和@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) 我在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) 更新:
我通过'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.
但这没有帮助.在解决此问题时,我们非常感谢您的帮助
谢谢,
马特
我可以通过将 的输出分配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)