R函数rep()复制向量的每个元素:
> rep(c("A","B"), times=2)
[1] "A" "B" "A" "B"
Run Code Online (Sandbox Code Playgroud)
这就像Python中的列表乘法:
>>> ["A","B"]*2
['A', 'B', 'A', 'B']
Run Code Online (Sandbox Code Playgroud)
但是使用rep()R函数,还可以指定向量的每个元素的重复次数:
> rep(c("A","B"), times=c(2,3))
[1] "A" "A" "B" "B" "B"
Run Code Online (Sandbox Code Playgroud)
Python中有这样的函数availbale吗?否则怎么定义呢?顺便说一下,我也对复制数组行的这种函数感兴趣.
使用knitr它可以rgl在Rmarkdown源文件的html文档中嵌入3D图形:
```{r setup}
library(rgl)
knit_hooks$set(rgl = hook_rgl)
x <- sort(rnorm(1000))
y <- rnorm(1000)
z <- rnorm(1000) + atan2(x,y)
```
```{r, rgl=TRUE}
plot3d(x, y, z, col=rainbow(1000))
```
Run Code Online (Sandbox Code Playgroud)
但是html文档中的3D图形不是交互式的.是否有可能获得交互式3D图形?包的writeWebGL()功能rgl创建一个带有交互式3D图形的html文件,有没有办法直接包含这个HTML代码与Rmarkdown?否则如何手动包含此HTML代码?
这是一个今天不起作用的示例(3D图形不会出现在Chrome中):
在RMD源文件,这是很基本的:
```{r setup}
library(rgl)
knit_hooks$set(webgl = hook_webgl)
```
```{r, webgl=TRUE}
M <- rbind(
c(0,0,0),
c(-1,4,0),
c(4,9,0),
c(6,3,0)
)
points3d(M,col='red')
```
```{r}
sessionInfo()
```
Run Code Online (Sandbox Code Playgroud)
我已经使用不同版本的针织与RStudio"编织"按钮,该文件在两种情况下rgl与knitr包(但这肯定是由于rgl因为与输出出现问题包writeWebGL功能):
R-2.15.2的旧版本:源文件和html呈现.并使用rgl_0.93.928 生成html文件 …
是否有类似于R中的expand.grid()函数的Python函数?提前致谢.
(编辑)以下是此R功能的说明和示例.
Create a Data Frame from All Combinations of Factors
Description:
Create a data frame from all combinations of the supplied vectors
or factors.
> x <- 1:3
> y <- 1:3
> expand.grid(x,y)
Var1 Var2
1 1 1
2 2 1
3 3 1
4 1 2
5 2 2
6 3 2
7 1 3
8 2 3
9 3 3
Run Code Online (Sandbox Code Playgroud)
(EDIT2)下面是rpy包的示例.我想得到相同的输出对象但不使用R:
>>> from rpy import *
>>> a = [1,2,3]
>>> b = [5,7,9]
>>> r.assign("a",a) …Run Code Online (Sandbox Code Playgroud) 通过将Markdown中的反引号加倍,可以很容易地呈现代码样式中的一些文本,包括反引号,例如:`r 2+2`.但是如何用RMarkdown做到这一点?通过我们可以显示的相同方式`t 2+2`,但替换t为r执行R代码2+2.
我到目前为止找到的唯一方法是:
<p><code class="r">`</code><code class="r">r 2+2`</code></p>
Run Code Online (Sandbox Code Playgroud)
不太方便.也许我应该为这样做更方便地定义一个新的CSS?
编辑:对不起,但我忘了提到我需要计数器变量的值.所以制作一个循环并不是我害怕的解决方案.
我不确定这是否可行,但我想做以下事情.对于函数,传递数字数组.每个数字都是for循环的上限,例如,如果数组是[2, 3, 5],则应执行以下代码:
for(var a = 0; a < 2; a++) {
for(var b = 0; b < 3; b++) {
for(var c = 0; c < 5; c++) {
doSomething([a, b, c]);
}
}
}
Run Code Online (Sandbox Code Playgroud)
因此,嵌套for循环的数量等于数组的长度.有没有办法让这项工作?我正在考虑创建一段代码,将每个for循环添加到一个字符串,然后通过它进行评估eval.然而,我已经阅读过,这eval不应该是一个人的首选,因为它也会产生危险的结果.
这里适合哪种技术?
在knitr/Sweave报告中,使用该选项的kable功能会添加每五行:knitrbooktabs=TRUE\addlinespace
P1 & A & 10 & 11.016181 & 110.16181 & 44.95101 & 269.9745\\
P1 & B & 10 & 8.592386 & 85.92386 & 35.06083 & 210.5743\\
P1 & A & 100 & 120.610305 & 120.61031 & 58.61274 & 248.1857\\
P1 & B & 100 & 94.990728 & 94.99073 & 46.16245 & 195.4671\\
P2 & A & 1000 & 698.097191 & 69.80972 & 37.34843 & 130.4846\\
\addlinespace
P2 & B & 1000 & 837.649249 & …Run Code Online (Sandbox Code Playgroud) 我在Rstudio中用Rmarkdown键入报告.当html用knitr 转换它时,还有一个markdown由knitr生成的文件.我转换此文件pandoc如下:
pandoc -f markdown -t docx input.md -o output.docx
Run Code Online (Sandbox Code Playgroud)
该output.docx文件很好,除了一个问题:数字的大小被改变,我需要手动调整Word中的数字.有没有什么可做的,也许是一个选项pandoc,以获得正确的数字大小?
当GHCI中的输出线太长时,它会被破坏:
> :i bar
bar :: Lens' (Foo a0) Int -- Defined at NewType_makeLenses.hs:7:1
> :i baz
baz :: Lens (Foo a0) (Foo a1) a0 a1
-- Defined at NewType_makeLenses.hs:7:1
Run Code Online (Sandbox Code Playgroud)
有没有办法设置线的最大长度?
编织以下Rmd文件时
```{r, fig.cap="mycaption"}
plot(0,0,axes=FALSE,xlab=NA,ylab=NA)
```
Run Code Online (Sandbox Code Playgroud)
使用RStudio的"Knit HTML"按钮,然后标题不会出现在html输出文件中.实际上对应于该图的html源代码是:
<p><img src="data:image/png;base64,..." alt="mycaption"/></p>
Run Code Online (Sandbox Code Playgroud)
要查看标题,它应该是例如:
<p><img src="data:image/png;base64,..." alt="mycaption"/><p class="caption">mycaption</p></p>
Run Code Online (Sandbox Code Playgroud)
如何轻松获得带有可见字幕的html输出?
我有一个字符串,如"3.1 ml"或"abc 3.1 xywazw"
我想"3.1"从这个字符串中提取.我在stackoverflow上发现了很多关于从字符串中提取数字的问题,但没有解决方案适用于十进制数字的情况.