我有上百个中等大小的Excel文件(5000两50.0000行之间有大约100列)加载到R.他们有一个明确的命名模式,比如x_1.xlsx,x_2.xlsx等等.
如何以最快,最直接的方式将这些文件加载到R中?
问题: 有没有办法在Rmarkdown文档中使用tikz表示法而无需将文档编译为pdf?
而且(有点朝同一方向):
问题: 在我想要编译为html的RMarkdown文档中添加多个tikz图形的最佳方法是什么(同时保持flexibilty将文件编译为pdf或后期的单词)?
我已经阅读了很多帖子的答案(比如R Markdown中的TikZ或者我如何使用TikZ制作独立(SVG)图形?),这些答案提出了类似的问题,但我仍然不完全确定,因此问题.
我基本上想要运行这段代码
---
output: pdf_document
header-includes:
- \usepackage{tikz}
---
## TikZ picture
Some picture
\begin{tikzpicture}
\draw (0,0) circle (2cm);
\end{tikzpicture}
Run Code Online (Sandbox Code Playgroud)
而不是pdf_document我想要html_document+一些魔法自动将tikz图形转换为html可以理解的东西.有什么建议?
我已经对此进行了糊涂和stackoverflowing了一段时间,但我似乎找不到正确的答案。
我有一个矩阵,其中包含不同的字符串,例如"a",或"gamma",甚至是强制转换为字符的数字。
m如果元素的m匹配候选值向量中的值,如何获得矩阵的数组索引(请注意,这些值可以是任何字符串)。这是我尝试过的。我虽然which(m %in% ...)会这样做,但不会返回我期望的结果。
m <- matrix(c(0, "a", "gamma", 0, 0.5, 0, 0, 0, 0), ncol = 3)
m
#> [,1] [,2] [,3]
#> [1,] "0" "0" "0"
#> [2,] "a" "0.5" "0"
#> [3,] "gamma" "0" "0"
which(m == "a", arr.ind = TRUE) # as expected
#> row col
#> [1,] 2 1
which(m == "a" | m == "gamma", arr.ind = TRUE) # also obvious
#> row col …Run Code Online (Sandbox Code Playgroud) 这是一个包含随机代码块的 .Rnw 文件,该文件在编织为 pdf 时打印在两页上。我注意到代码块突出显示在分页后停止。
\documentclass{article}
%%% Knitr setup
<<include=FALSE, cache=FALSE>>=
library(knitr)
@
\begin{document}
$\;$
\vspace{15cm}
<<eval = FALSE>>=
model <- "
# Measurement models
PR =~ PR1 + PR2 + PR3
IM =~ IM1 + IM2 + IM3
DI =~ DI1 + DI2 + DI3
AD =~ AD1 + AD2 + AD3
DL =~ DL1 + DL2 + DL3
AA =~ AA1 + AA2 + AA3 + AA4 + AA5 + AA6
LO =~ LO1 …Run Code Online (Sandbox Code Playgroud) 我已经更新到 R4.0.0和 RStudio 版本1.2.5042。
我正在开发一个包,我经常使用以下工作流程:
--with-keep.sourceR CMD INSTALL 选项)从 RStudio 中构建包。.R我要调试的函数的文件中设置断点。这曾经很好地工作。但是,现在我总是得到:
调试位置是近似的,因为源不可用
这是 annyoing,因为我仍然可以调试,但我不在实际功能中了。
任何提示/想法为什么会这样?
这似乎是 RStudio 和 R 4.0.0 的问题。这就是我这么认为的原因。我使用了另一台运行 Windows 10 的机器并执行了以下步骤(按此顺序;对于 Windows 用户应该可以重现)。一开始我安装了 R 3.6.1 和 RStudio 1.2.5042(在撰写本文时,1.2.5042 是当前版本;也尝试使用 RStudio 的预览版 1.3.957)。
克隆我从 Github 开发的包:
git clone "https://github.com/M-E-Rademaker/cSEM"
Run Code Online (Sandbox Code Playgroud)转到包根目录并打开 cSEM.Rproj
devtools::install_github("M-E-Rademaker/cSEM")自动安装包并下载所有cSEM依赖的包。Build”安装和“ Install and Restart”R/00_csem.R并在例如第 321 行设置断点。现在运行以下代码:
model <- "
# …Run Code Online (Sandbox Code Playgroud)我正在玩一些purrr功能,并发现(令我高兴的)purrr::at_depth(.x, .depth, .f, ...)这是短暂的purrr::map(x, . %>% map(fun)).
问题: 当我有两个嵌套列表要并行迭代时,是否有类似的功能或正确的" purrr-way"做同样的事情
举个例子:
x <- list(list(10, 20), list(30, 40))
y <- list(list(1, 2), list(3, 4))
a <- list()
for(i in seq_along(x)) {
a[[i]] <- map2(x[[i]], y[[i]], `+`)
}
Run Code Online (Sandbox Code Playgroud)
这有效,但它相当脏,我想避免for循环.
该函数callmultmoments计算正态分布的矩。"Sum of powers is odd. Moment is 0."如果幂的和为奇数,该功能将自动打印。在保持原始功能不变的情况下,有什么方法可以抑制这种情况。
例如:
require(symmoments)
# Compute the moment for the 4-dimensional moment c(1,1,3,4):
m.1134 <- callmultmoments(c(1,1,3,4))
Run Code Online (Sandbox Code Playgroud)
编辑:
如此处所述,我们可以使用
## Windows
sink("nul")
...
sink()
## UNIX
sink("/dev/null") # now suppresses
.... # do stuff
sink() # to undo prior suppression, back to normal now
Run Code Online (Sandbox Code Playgroud)
但是,我正在编写一个程序包,因此我希望它与平台无关。有什么想法可以代替吗?
有谁知道是否tidyr::complete()支持分组通过group_by()?
确切地说:我有一些看起来像这样的数据框
df <- data.frame(
"ID" = rep(1:2, each = 2),
"Col1" = c("A", NA, "AA", NA),
"Col2" = c("B", "C", "BB", "CC"))
Run Code Online (Sandbox Code Playgroud)
现在我想使用complete()和group_by()计算每组的所有可能组合!
df %>%
group_by(ID) %>%
complete(Col1, Col2)
Error in .Call("dplyr_left_join_impl", PACKAGE = "dplyr", x, y, by_x, :
negative length vectors are not allowed
Run Code Online (Sandbox Code Playgroud)
这会导致错误.但是,使用complete()没有分组工作,但这不是我想要的.
df %>%
complete(Col1, Col2)
Run Code Online (Sandbox Code Playgroud)
问题:
complete()不合作group_by?我一直在玩弄,substitute并不能完全弄清楚nchar(substitute(a + b + c))实际的结果是什么?结果是
nchar(substitute(a + b + c))
[1] 1 5 1
Run Code Online (Sandbox Code Playgroud)
究竟究竟是什么?我认为中期只是该表达式的元素数量.但是下面的内容是什么呢?其他1代表什么呢?
nchar(substitute(a + b))
[1] 1 1 1
Run Code Online (Sandbox Code Playgroud) 我如何提取所有<-在单词末尾或介于两者之间带有符号“ ”的单词,但在后一种情况下,仅当“ <-”符号后跟一个点时。
把它放在上下文中。练习 6.5.3 的哈德利Wickhams -预研 要求读者列出基本包所有替代函数。
只有一种方法的替换函数由<-
函数名称末尾的符号表示。但是,泛型函数的方法名称附加到替换形式的名称(带一个点),这样<-不再位于函数名称的末尾。例子split<-.data.frame
编辑:
obj <- mget(ls("package:base"), inherits = TRUE)
funs <- Filter(is.function, objs)
Run Code Online (Sandbox Code Playgroud)
这就是您提取基础包中所有功能的方式。现在我只想找到替换功能。
当我运行下面的代码时,一切都按预期工作
# install.packages("dynlm")
# install.packages("tidyr")
require(dynlm)
require(tidyr)
Time <- 1950:1993
Y <- c(5820, 5843, 5917, 6054, 6099, 6365, 6440, 6465, 6449, 6658, 6698, 6740, 6931,
7089, 7384, 7703, 8005, 8163, 8506, 8737, 8842, 9022, 9425, 9752, 9602, 9711,
10121, 10425, 10744, 10876, 10746, 10770, 10782, 11179, 11617, 12015, 12336,
12568, 12903, 13029, 13093, 12899, 13110, 13391)
X <- c(6284, 6390, 6476, 6640, 6628, 6879, 7080, 7114, 7113, 7256, 7264, 7382, 7583, 7718,
8140, 8508, 8822, 9114, 9399, 9606, 9875, 10111, …Run Code Online (Sandbox Code Playgroud) 我刚刚将readr软件包从版本0.1.1 更新到0.2.0,但现在在抛出错误之前有效的操作.
在更新之前,我使用readr包执行此操作:
file.list <- list.files(<path>, pattern='*.csv')
df.list <- lapply(file.list, read_csv2)
df.list <- lapply(df.list, function(x) x[-1,])
Run Code Online (Sandbox Code Playgroud)
最后一步是必要的,因为我有一些带有特殊字符的长标题,以某种方式导致额外的行被读取.这是另一个问题,但只是删除第一行一直工作到那时.
read_csv2 警告我有关列名称的问题但是,如上所述,我通过删除行来修复:
Warning: 1 parsing failure.
row col expected actual
1 -- 227 columns 222 columns
Run Code Online (Sandbox Code Playgroud)
然后我继续将所有数据帧绑定到一个dplyr::bind_rows(因为每个.csv具有相同的头).这之前完美无缺,但现在当我这样做时,我得到了
> full.data <- bind_rows(df.list)
Error: corrupt data frame
Run Code Online (Sandbox Code Playgroud)
我没有改变任何其他东西(相同的R版本,相同的RStudio版本,没有更新其他包).有经验的人有什 与read_csv2的工作方式相比,版本0.1.1有任何重大变化.
谢谢
假设我有一个矩阵
x <- matrix(c(0, 1, 1,
1, 0, 0,
0, 1, 0), byrow = TRUE, nrow = 3,
dimnames = list(c("a", "b", "c"), c("a", "b", "c")))
Run Code Online (Sandbox Code Playgroud)
我现在需要两个向量(或者甚至是data.frame中更好的拖动列),第一个向量/列保存列名称,第二个向量保存rowname,其中所有元素x都是1.
所以在我的例子中我想得到这个
v1 <- c("a", "b", "b", "c")
v2 <- c("b", "a", "c", "a")
Run Code Online (Sandbox Code Playgroud)
对于20 x 20矩阵来说,这是最快和最优雅的方式.