首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >用针织器编译.Rmd文件时调用第二个文件中的函数

用针织器编译.Rmd文件时调用第二个文件中的函数
EN

Stack Overflow用户
提问于 2018-06-24 13:00:17
回答 1查看 2.4K关注 0票数 1

我想使用knitr格式化一个R标记文件,让我们称之为Main.rmdMain.rmd中的一些代码依赖于第二个文件中的助手函数,让我们称之为Functions.rmd。当我第一次运行Functions.rmd,然后运行Main.rmd时,Main.rmd中的代码运行良好。当我第一次运行Functions.rmd,然后尝试编织Main.rmd时,我会收到一个评估:

错误“对象'myfunction‘找不到

如果不将Main.rmdFunctions.rmd合并成一个文档(我希望避免这样做),我如何解决这个问题?

编辑:我在下面添加了一个玩具例子。到目前为止,对于如何从Functions.rmdMain.rmd调用函数有非常有用的建议,但它们都需要将Functions.rmd转换为.R文件。然而,就我目前的目的而言,重要的是Functions.rmd也可以被理解为一个独立的标记文档。

首先,Main.rmd

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
---
title: "Main_test"
author: "Matt Nolan"
date: "25/06/2018"
output: html_document
---

```{r setup, include=FALSE}

knitr::opts_chunk$set(echo =真)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
## Background.
This is the main body of text and code used to display results of analyses, some of which are created by calling functions in Functions.Rmd.

```{r cars}

myexamplefunction(1,2)

代码语言:javascript
代码运行次数:0
运行
复制

还有,这是Functions.rmd

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
---
title: "Functions_test"
author: "Matt Nolan"
date: "25/06/2018"
output: html_document
---

```{r setup, include=FALSE}

knitr::opts_chunk$set(echo =真)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
## Background
This is a document containing functions used in the document "Main_test". 
Because it contains functions and formatted text to explain the functions for an interested reader, it should be usable as a standalone markdown document.

For example, this is a function that adds two numbers.
```{r cars}

myexamplefunction <- -函数(a,b) {a + b}

代码语言:javascript
代码运行次数:0
运行
复制
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-24 13:24:11

2018年6月30日更新:r标记不支持组合Rmd文件

Matt在2018年6月25日的更新澄清了这个问题,询问如何将一个Rmd文档嵌入到另一个Rmd文档中。根据R标记网站,Rmd需要一个Rmd文件。它目前不支持在另一个Rmd文档中嵌入一个Rmd文件。

尽管如此,使用bookdown包,您可以将Rmd文件构造为一本书中的章节,其中每个Rmd文件都是书中的一章。有关详细信息,请参阅Bookdown:使用R Markdown 1.4 -两种渲染方法编写书籍、快速入门页面和Bookdown演示 github存储库,以获得在bookdown中构建的示例图书。

2018年6月25日更新:在附录中打印代码

根据OP的注释,将函数包含在Rmd文件而不是R文件中的原因是为了在附录中获得代码的格式化打印输出。通过我最初发布的技术加上一些更改,这是可能的。

  1. 使用命名块将代码放在附录中,并使用参数echo=TRUEeval=FALSE避免多次执行。
  2. 通过ref.label=参数从文档主流程的附录中执行代码,并避免使用echo=FALSE参数在主文档中打印代码。
  3. 除了使用source()函数之外,还必须在附录中的另一个块中打印每个函数,以便获得每个函数的格式化打印。

下面列出了我的示例Rmd文件的更新版本。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
---
title: "TestIncludedFiles"
author: "Len Greski"
date: "June 24, 2018"
output: html_document
---

```{r setup, include=FALSE}

knitr::opts_chunk$set(echo =真)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
## Background

A question was posted on [Stackoverflow](https://stackoverflow.com/questions/51013924/calling-functions-in-a-second-file-when-compiling-rmd-files-with-knitr) about how to include functions from one Rmd file while knitting another. 

If the second file contains R functions to be accessed in the second Rmd file, they're best included as R files rather than Rmd. In this example we'll include three files of functions from the Johns Hopkins University *R Programming* course: `pollutantmean()`, `corr()`, and `complete()`. We'll execute them in a subsequent code block. 

After an update to the original post where the original poster noted that he included the functions in an Rmd file in order to provide a formatted printout of the code in the report as an appendix, I've modified this example to account for this additional requirement. 

```{r ref.label="sourceCode",echo=FALSE}

从附录执行sourceCode块

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
## Executing the sourced files

Now that the required R functions have been sourced, we'll execute them.


```{r runCode, echo=TRUE}

污染平均值(“规格数据”,“硝酸盐”,70:72)

完成(“特定数据”,1:10)

corr("specdata",threshold=500)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# Appendix 


```{r sourceCode,echo=FALSE,eval=FALSE}

使用source()函数来获取我们想要执行的函数

source("./rprogramming/oneLine_pollutantmean.r")

源(“./rprogramming/oneLine_plete.r”)

源(“./rprogramming/oneLine_corr.r”)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
The following is an inventory of the functions used in this Rmd file.

```{r }

污染平均

完成

更正

代码语言:javascript
代码运行次数:0
运行
复制

...and文档附录部分的输出(通过编辑以避免发布类编程分配的答案)。

原始答案

如果第二个Rmd文件只包含函数,则最好将它们保存为R文件,并使用source()将它们包含在Main.Rmd中。例如:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
date: "June 24, 2018"
output: html_document
---

```{r setup, include=FALSE}

knitr::opts_chunk$set(echo =真)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
## Background

A question was posted on [Stackoverflow](https://stackoverflow.com/questions/51013924/calling-functions-in-a-second-file-when-compiling-rmd-files-with-knitr) about how to include functions from one Rmd file while knitting another. 

If the second file contains R functions to be accessed in the second Rmd file, they're best included as R files rather than Rmd. In this example we'll include three files of functions from the Johns Hopkins University *R Programming* course: `pollutantmean()`, `corr()`, and `complete()`. We'll execute them in a subsequent code block. 

```{r sourceCode,echo=TRUE}

使用source()函数来获取我们想要执行的函数

来源(“./rprogramming/污染度.r”)

源(“./rprogramming/plete.r”)

来源(“./rprogramming/corr.r”)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
## Executing the sourced files

Now that the required R functions have been sourced, we'll execute them.


```{r runCode, echo=TRUE}

污染平均值(“规格数据”,“硝酸盐”,70:72)

完成(“特定数据”,1:10)

corr("specdata",threshold=500)

代码语言:javascript
代码运行次数:0
运行
复制

...produces输出如下:

previously:这个答案包含了我之前在2016年作为博客文章ToothGrowth分配:从Knitr中的附录访问R代码发布的技巧。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51013924

复制
相关文章
CSV逗号分隔值格式文件(示例分析)
CSV全称Comma Separated Values是"逗号分隔值"的英文缩写.通常是纯文本文件,可以被文本编辑软件,Excel或WPS表格打开. 基本规则 开头不留空,以行为单位; 列名(标题)放在第一行(可忽略不加列名); 每一行数据以换行结束,无空行; 以半角逗号作分隔符,列为空也要表达其存在; 列内容如存在半角逗号则用半角引号("")将该字段值包含起来; 列内容如存在半角引号则需要使用半角双引号("")转义,并用半角引号("")将该字段值包含起来; 文件读写时引号,逗号操作规则互逆; 内码格式不限
Qt君
2019/07/15
3.5K0
SQL 将一个字段内用逗号分隔的内容分成多条记录
本文转http://www.mhzg.net/a/20117/2011789260293.html
跟着阿笨一起玩NET
2018/09/18
4.5K0
django 获取post传递的值
django 中post方法传值,用普通的request.POST.get(‘value’) 是没法正常接收到前端传递过来的值的
kirin
2020/07/14
3.9K0
LINQ to XML 从逗号分隔值 (CSV) 文件生成 XML 文件
参考:http://msdn.microsoft.com/zh-cn/library/bb387090.aspx
跟着阿笨一起玩NET
2018/09/19
2.6K0
python用 GET,POST,PUT
、JSON简介 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。 它基于JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)。 这些特性使JSON成为理想的数据交换语言。 二、HTTP的请求方法 HTTP/1.1协议中共定义了八种方法(有时也叫“动作”)来表明Request-URI指定的资源的不同操作方式: . OPTIONS - 返回服务器针对特定资源所支持的HTTP请求方法。                    也可以利用向Web服务器发送'*'的请求来测试服务器的功能性。 . HEAD    - 向服务器索要与GET请求相一致的响应,只不过响应体将不会被返回。                 这一方法可以在不必传输整个响应内容的情况下,就可以获取包含在响应消息头中的元信息。 . GET     - 向特定的资源发出请求。                 注意:GET方法不应当被用于产生“副作用”的操作中,例如在web app.中。                 其中一个原因是GET可能会被网络蜘蛛等随意访问。 . POST    - 向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。                 数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。 . PUT     - 向指定资源位置上传其最新内容。 . DELETE  - 请求服务器删除Request-URI所标识的资源。 . TRACE   - 回显服务器收到的请求,主要用于测试或诊断。 . CONNECT - HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。 . PATCH   - 用来将局部修改应用于某一资源,添加于规范RFC5789。 其中,GET,POST, PUT, DELETE常用于RESTful API的实现,所以下面做的代码实现 三、Python实现的json数据以HTTP GET,POST,PUT,DELETE方式进行页面请求
py3study
2020/01/06
2.6K0
ThreadLocal 线程内取不到值
在拦截器里, 从 request 请求里拿出了一些数据例如用户id啥的, 存储到了 ThreadLocal 里, 在后面具体的业务处理中, 从 ThreadLocal 却里取不到值
芥末鱿鱼
2022/05/05
1.5K0
逗号运算符和逗号表达式
C语言提供一种特殊的运算符。用它将两个(或多个)表达式连接起来。 如 3+5,6+8 上式称为逗号表达式。逗号表达式的一般形式为 表达式1,表达式2
Twcat_tree
2022/11/30
1.2K0
JS 数字,金额 用逗号 隔开(数字格式化)
例如:  12345格式化为12,345.00  12345.6格式化为12,345.60  12345.67格式化为 12,345.67  只留两位小数。  回来后写了个格式化函数。可以控制小数位数,自动四舍五入。 代码如下: 
Java架构师必看
2021/05/20
13.6K0
nodejs 用request实现post请求
以下是使用 Node.js 和 Request 模块来实现 POST 请求的示例代码:
用户8703799
2023/05/19
1.4K0
HTTP 协议内常见的post提交数据类型介绍
我们知道,HTTP 协议是以 ASCII 码传输,建立在 TCP/IP 协议之上的应用层规范。HTTP 协议规定的 HTTP 请求方法有 OPTIONS、GET、HEAD、POST、PUT、DELETE、TRACE、CONNECT 这几种。其中 POST 一般用来向服务端提交数据,本文主要讨论 POST 提交数据的几种方式。
EasyNVR
2020/05/26
9950
postfix邮箱_用post方式发送文件
https://blog.csdn.net/wh211212/article/details/53040620 https://blog.jjonline.cn/linux/185.html
全栈程序员站长
2022/11/09
4110
postfix邮箱_用post方式发送文件
php 字符串打散为数组,用逗号分隔出数组
使用explode可以将一段字符串打散成一个数组,不过,explode使用某个字符打乱,例如以上例子,我在explode圆括号内第一个参数是空格,第二个参数为我们将要打乱的字符串,那么连起来的意思就是把$str字符串通过空格打散成字符。
1_bit
2020/10/23
2.2K0
Shell内值命令之exit「建议收藏」
需求:编写shell脚本使用exit退出,退出时返回一个非0数字状态值,执行脚本文件并打印返回状态值
全栈程序员站长
2022/11/10
6230
列表内数字组合最大值
第一种 import itertools lt = [4, 40, 45, 6, 9, 3, 5, 2, 8] lt2 = map(str, lt) it = itertools.permutations(lt2,len(lt)) # for i in it: # print(i) m = map(lambda x:''.join(x), it) # for i in m: # print(i) print(max(m)) # print(m, type(m)) 第二种 lt = [4,
py3study
2020/01/17
8490
SQL如何将一个列中值内的逗号分割成另一列
例如某个列是这样的: 7890 – 20th Ave E Apt 2A, Seattle, VA 9012 W Capital Way, Tacoma, CA 5678 Old Redmond Rd, Fletcher, OK 3456 Coventry House Miner Rd, Richmond, TX
繁华是客
2023/03/03
1.8K0
自适应的逗号
>>> name = [ 'python', 'java', 'javascript' # 缺少逗号 'hello' ] >>> names ['python','java','javascripthello'] >>> my_str = ( 'This is a super long string' 'across multiple lines' 'no backslash characters' ) >>> my_str 'This is a
TalkPython
2019/06/11
1.2K0
C++:统计字符串内大小写字母,数字空格,逗号等
川川好久没发文了,最近实在太忙,要是感兴趣可以直接跟我私聊, QQ:2835809579
川川菜鸟
2021/10/18
9500
北京这两天为啥颜值爆表?
转自|中国天气网 微信|chinaweathernews 作者|朱茵 北京这几天的天空美疯了,无比透亮的蓝天上,漂浮着棉花糖般的云朵,随便一抬头,就是一幅当年windows XP里的风景桌面啊!如此美景,让网友拍照片都拍到手软了,路上处处都是举着手机对着天空各种啪啪啪啪啪的人,还有人调侃,要是把朋友圈里晒的图都拼起来,都能数出整个帝都有几朵云! 为啥这几天颜值如此爆表? 两个字——北风。 因为这两天北京在刮水汽少、干燥的北风,刮走了所有干扰你视线的东西,所以天空透明度高,天蓝得可以溺死你。 好了,不太在乎原
大数据文摘
2018/05/21
5830
PHP模拟发送POST请求之三、用Telnet和fsockopen()模拟发送POST信息
枕边书
2018/01/04
1.9K0
PHP模拟发送POST请求之三、用Telnet和fsockopen()模拟发送POST信息
点击加载更多

相似问题

用C语言进行串行通信

22

用USB到串行设备和controlTransfers的Android通信

11

UBUNTU C的USB到串行通信问题

11

通过USB集线器进行Android USB主机串行通信

226

C#串行通信

11
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文