小编Jon*_*rne的帖子

过滤基于row_number()的data.frame

更新:自问这个问题以来,dplyr已经更新,现在按照OP的要求执行

我正尝试获得第二至第七行中data.frame使用dplyr.

我这样做:

require(dplyr)
df <- data.frame(id = 1:10, var = runif(10))
df <- df %>% filter(row_number() <= 7, row_number() >= 2)
Run Code Online (Sandbox Code Playgroud)

但这会引发错误.

Error in rank(x, ties.method = "first") : 
  argument "x" is missing, with no default
Run Code Online (Sandbox Code Playgroud)

我知道我可以轻松制作:

df <- df %>% mutate(rn = row_number()) %>% filter(rn <= 7, rn >= 2)
Run Code Online (Sandbox Code Playgroud)

但我想明白为什么我的第一次尝试不起作用.

r dplyr

37
推荐指数
3
解决办法
4万
查看次数

如何展平/合并重叠的时间段

我有一个大的时间段数据集,由"开始"和"结束"列定义.有些时期重叠.

我想将所有重叠时间段组合(展平/合并/折叠)以具有一个"开始"值和一个"结束"值.

一些示例数据:

  ID      start        end
1  A 2013-01-01 2013-01-05
2  A 2013-01-01 2013-01-05
3  A 2013-01-02 2013-01-03
4  A 2013-01-04 2013-01-06
5  A 2013-01-07 2013-01-09
6  A 2013-01-08 2013-01-11
7  A 2013-01-12 2013-01-15
Run Code Online (Sandbox Code Playgroud)

期望的结果:

  ID      start        end
1  A 2013-01-01 2013-01-06
2  A 2013-01-07 2013-01-11
3  A 2013-01-12 2013-01-15
Run Code Online (Sandbox Code Playgroud)

我尝试过的:

  require(dplyr)
  data <- structure(list(ID = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L), class = "factor", .Label = "A"), 
    start = structure(c(1356998400, 1356998400, 1357084800, 1357257600, 
    1357516800, 1357603200, 1357948800), tzone = …
Run Code Online (Sandbox Code Playgroud)

datetime r date lubridate

13
推荐指数
3
解决办法
2189
查看次数

从https站点获取数据时,R会生成"不支持的URL方案"错误

R版本3.0.1(2013-05-16)适用于Windows 8 knitr版本1.5 Rstudio 0.97.551

我正在使用knitr我的R代码的降价.作为我的分析的一部分,我从网上下载了各种数据集,knitr从http网站获取数据完全没问题,但是从https网站获取数据产生了一个unsupported URL scheme消息.我知道在download.filemac上使用该函数时method,必须将参数设置为curl从https获取数据,但这在使用时无效knitr.

我需要做什么才能knitr从Https网站收集数据?

编辑:这是在Knitr中返回错误的代码块,但是当通过R运行时没有错误.

```{r}
fileurl <- "https://dl.dropbox.com/u/7710864/data/csv_hid/ss06hid.csv"
download.file(fileurl, destfile = "C:/Users/xxx/yyy")
```
Run Code Online (Sandbox Code Playgroud)

r knitr

11
推荐指数
4
解决办法
2万
查看次数

Knitr前导码错误导致"pandoc文档转换失败,错误43"

Rstudio版本0.99.441; Windows 7企业; knitr 1.10.5; MiKTex 0.4.5 r.1280(2.9 64位)

我在办公室计算机上尝试编写Rstudio中的PDF时出错,编织HTML或单词没有问题.问题可能与更新有关,因为编织过去工作正常,我的家用电脑可以编织到pdf而没有问题,但是我把我的电脑带回家进行更新,问题仍然存在.

我的错误消息如下"pandoc.exe:从TeX源生成PDF时出错错误:pandoc文档转换失败,错误43"

我使用Rstudio中的模板示例创建了一个新文件,试图编织,然后检查TEX输出.我将错误追溯到序言的最后一段.

\setlength{\droptitle}{-2em}
 \title{Untitled}
 \pretitle{\vspace{\droptitle}\centering\huge}
 \posttitle{\par}
 \author{user name}
 \preauthor{\centering\large\emph}
 \postauthor{\par}
 \predate{\centering\large\emph}
 \postdate{\par}
 \date{\begin{enumerate}
\def\labelenumi{\arabic{enumi}.}
\setcounter{enumi}{14}
\itemsep1pt\parskip0pt\parsep0pt
\item
  juni 2015
\end{enumerate}}
Run Code Online (Sandbox Code Playgroud)

通过删除最后7行与枚举和日期然后运行TEX代码,文档打印为PDF.为什么会发生这种情况,我该怎么做才能让文档在Rstudio首次点击时编织?

latex r tex knitr r-markdown

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

在 R 3.6 上为 ubuntu 仿生海狸安装 rJava 时出现“无法运行简单的 JNI 程序”错误消息

我有一个非常常见的问题,即 rJava 无法在 Ubuntu 上正确安装。此问题已在此处此处此处等多个地方讨论过。

基本问题是,在安装rJava包时,产生以下错误信息

configure: error: Unable to run a simple JNI program. Make sure you have configured R with Java support (see R documentation) and check config.log for failure reason.
Warning in system(cmd) : error in running command
ERROR: configuration failed for package ‘rJava’
* removing ‘/home/jonno/R/x86_64-pc-linux-gnu-library/3.6/rJava’
Run Code Online (Sandbox Code Playgroud)

这个问题有各种密切相关的解决方案。它们中的大多数sudo R CMD javareconf用于为 R 配置 Java(也是一个-e变体)。有些人建议JAVA_HOME在环境变量中设置路径(其他人说不要)。其他人建议卸载并重新安装 R,而其他人建议从 …

java ubuntu r rjava ubuntu-18.04

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

当knitr必须下载zip文件时出错

由于与网络安全系统的冲突,我可以将数据文件从互联网下载到网络中可以在R中使用的区域,这是通过R本身下载它.当我在RStudio中运行脚本时它工作正常.当我尝试编写脚本时,我会得到消息Unsupported URL或者我会得到

Error in file(file, "rt") : cannot open the connection 
Calls: <Anonymous> ... withVisible -> eval -> eval -> read.csv -> 
    read.table -> file
Execution halted
Run Code Online (Sandbox Code Playgroud)

下面是在正常运行下但在编织过程中不起作用的代码.

url <- "https://d396qusza40orc.cloudfront.net/repdata%2Fdata%2Factivity.zip"
download.file(url, "repdata-data-activity.zip")
unzip("repdata-data-activity.zip")
Run Code Online (Sandbox Code Playgroud)

如果文件不是一个zip我可以使用下载它RCurl,但是当我尝试的R坠毁,我也尝试过method = "curl", setInternet2(TRUE),并试图删除shttps,但他们都没有工作.

结果是我不能生产出问题的针织文件.我之前有一个非常类似的问题(CSV文件不是压缩的CSV文件,请参阅下面的链接)并尝试了建议但没有成功:从https网站获取数据时R产生"不支持的URL方案"错误

我使用的是Windows 7和RStudio

重复:这只是编织文档时的问题,而不是运行脚本时的问题.

zip curl r rstudio knitr

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

'as.tibble' 在 tibble 2.0.1 但不是 1.4.2 中导致错误

我写了一个函数部分,将矩阵转换为小标题。这在 tibble 1.4.2 中没有问题,但在 2.0.1 中会导致错误。

导致错误的代码如下

library(tibble)
library(magrittr)
testmerge <- matrix( data = NA, ncol = 6 + 1, nrow =  0) %>%
      as.tibble
Run Code Online (Sandbox Code Playgroud)

错误信息如下

在此处输入图片说明

我可以通过执行以下操作来解决问题

testmerge <- matrix( data = NA, ncol = 6 + 1, nrow =  0) %>%
  as.data.frame() %>%
      as_tibble
Run Code Online (Sandbox Code Playgroud)

但这似乎有点啰嗦。

是什么导致了这种变化?我怎么能轻易地得到一小撮空列呢?

r tibble

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

在 ggplot 中使用 geom_sf 设置边缘/边框厚度

当我绘制它时,我试图更改 sf 对象区域的边框颜色。改变边框的颜色很好,但是,线条有点细,所以我只想让彩色线条变粗,这样它们就更明显了。

阅读这个问题表明使用“lwd”将允许改变厚度。然而,当我尝试时,要么没有效果,要么线条非常粗。

请参阅下面的示例

library(sf)
library(ggplot)
library(dplyr)

nc <- st_read(system.file("shape/nc.shp", package="sf")) %>%
  mutate(type= case_when(
    BIR74>16000 ~"High",
    TRUE ~"Low"
  ) %>% factor(levels = c("Low", "High"))) #the levels are ordered to avoid the grey lines overwriting the red ones

nc %>%
  ggplot(.) + 
  geom_sf(aes(fill = BIR74, colour = type)) + #does the job but the coloured borders are quite thing
  scale_color_manual(values = c( "#666666","#F8766D"))


nc %>%
  ggplot(.) + 
  geom_sf(aes(fill = BIR74, colour = type, 
              lwd = ifelse(type =="High", 1, …
Run Code Online (Sandbox Code Playgroud)

r ggplot2 r-sf

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

将矩阵的每列中的NA替换为该列的中值

我试图将矩阵的每列中的NA替换为该列的中值,但是当我尝试使用lapply或者sapply我得到错误时; 当我使用for循环时,代码工作,当我一次更改一列时,我做错了什么?

例:

set.seed(1928)
mat <- matrix(rnorm(100*110), ncol = 110)
mat[sample(1:length(mat), 700, replace = FALSE)] <- NA
mat1 <- mat2 <- mat

mat1 <- lapply(mat1,
  function(n) {
     mat1[is.na(mat1[,n]),n] <- median(mat1[,n], na.rm = TRUE)
  }
)   

for (n in 1:ncol(mat2)) {
  mat2[is.na(mat2[,n]),n] <- median(mat2[,n], na.rm = TRUE)
}
Run Code Online (Sandbox Code Playgroud)

r matrix median na imputation

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

使用 R 中的 sprintf 将前导零添加到数据框列

我有一个数据框,希望数字变量的长度为四位数字,为了做到这一点,我需要添加 1-3 个前导零,我选择执行此操作的方法是 sprintf 函数,因为数字并不重要转换为字符类。不幸的是结果没有按照我想要的顺序出现

测试数据帧的制作如下,并将前导 0 列添加为第三列,以便于比较。通过运行代码可以看出,粘贴前导零数字的顺序与原始数字顺序不符

test <- as.data.frame(cbind(letters,seq(from=1, to=26)))
test[,3]<-sprintf("%04d", test[,2])
Run Code Online (Sandbox Code Playgroud)

通过将原始数字列分类为字符,按字母顺序重新排列数据帧顺序,sprintf 数字现在按升序排列,尽管数字系列不是。

test.two <- as.data.frame(cbind(letters,seq(from=1, to=26)))
test.two <- test.two[i <-order(as.character(test.two[,2])),]
test.two[,3]<-sprintf("%04d", test.two[,2])
Run Code Online (Sandbox Code Playgroud)

我可以通过弗兰肯斯坦将其组合在一起来创建所需的数据集。

test.three <- as.data.frame(cbind(letters,seq(from=1, to=26)))
test.three[,3]<-test.two[,3]
Run Code Online (Sandbox Code Playgroud)

然而,我想知道我做错了什么,以及什么方法可以给我带来我期望从我认为简单的操作中得到的结果!

printf r number-formatting dataframe leading-zero

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

使三角形(或通常是正方形)矩阵对称

我试图从R中的下三角矩阵创建一个对称矩阵.

在之前的Q&A(将矩阵的上三角部分转换为对称矩阵)中,用户李哲源表示,对于大型矩阵,这不应该在R中完成并且在C中提出了解决方案.但是我不理解C并且从来没有例如Rccp之前用过,所以不知道如何解释答案.然而很明显,那里的C代码会生成rnorm我不想要的随机数().我想放入一个方阵并得出一个对称矩阵.

对于A在其下三角形中具有数据的给定方阵,如何在C中有效地创建对称矩阵并在R中使用它?

c performance r matrix

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