小编use*_*795的帖子

使用dplyr过滤data.frame中的完整案例(案例删除)

是否可以使用dplyr过滤data.frame以获取完整的案例?complete.cases当然,有一个所有变量的列表.但这是a)当有很多变量时很冗长,而b)当变量名称未知时是不可能的(例如在处理任何data.frame的函数中).

library(dplyr)
df = data.frame(
    x1 = c(1,2,3,NA),
    x2 = c(1,2,NA,5)
)

df %.%
  filter(complete.cases(x1,x2))
Run Code Online (Sandbox Code Playgroud)

r dplyr magrittr

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

什么时候值得使用`data.table`?我什么时候能期望获得最大的性能提升?

我只是花了一些时间研究data.tableR,并且想知道我可以期待最大性​​能提升的条件.也许简单的答案是当我有一个大型data.frame并经常在这个data.frame的子集上运行.当我只是加载数据文件和估计模型时,我不能期望太多,但许多[操作会产生差异.这是真的吗,唯一的答案还是我应该考虑什么?什么时候开始重要?10x5,1,000x5,1,000,000x5?

编辑:一些评论表明,这data.table通常更快,同样重要,几乎从不慢.因此,知道何时不使用也是一件好事data.table.

r data.table

13
推荐指数
2
解决办法
401
查看次数

一个图中两个图例之间的间隙较小(例如颜色和大小比例)

如何在一个图中缩小两个参考线之间的间隙.在下面的示例中,两个指南来自颜色和大小比例,我想更改两者之间的间隙,以便标题"大小"正好位于图例点下方1.设计方面,它可能不会感觉在这个例子中,但在我的实际应用程序中它.

df=data.frame(x=rnorm(100),y=rnorm(100),color=factor(rbinom(100,1,0.5)),size=runif(100))
ggplot(df,aes(x=x,y=y,color=color,size=size)) + geom_point()
Run Code Online (Sandbox Code Playgroud)

编辑:这是情节.我想通过绿线突出显示间隙,箭头更小.

在此输入图像描述

r ggplot2

12
推荐指数
2
解决办法
3374
查看次数

为什么我有时必须在`data.frame()`中附加`.`来查找`do`中的命名参数?

为什么这不起作用?

data.frame(x = rnorm(100)) %>% do(df = .)

错误信息:

Error in do_(.data, .dots = lazyeval::lazy_dots(...)) :
  argument ".data" is missing, with no default
Run Code Online (Sandbox Code Playgroud)

相反,我必须封闭.data.frame():

data.frame(x = rnorm(100)) %>% do(df = data.frame(.))
Run Code Online (Sandbox Code Playgroud)

或者,这也有效:

data.frame(x = rnorm(100)) %>% do(., df = .)
Run Code Online (Sandbox Code Playgroud)

当然,这个例子没有意义.但是在使用时将其保存data.frame为列表变量会很有帮助group_by.

这是一个似乎有关的更复杂的问题:

library("MatchIt")
n <- 5000
DF <- data.frame(
    x1 = rnorm(n),
    x2 = rbinom(n, 1, 0.5),
    group = rbinom(n, 1, 0.5),
    D = rbinom(n, 1, 0.5)) 
Run Code Online (Sandbox Code Playgroud)

现在这会产生错误:

DF %>%
    group_by(group) %>% …
Run Code Online (Sandbox Code Playgroud)

r dplyr

10
推荐指数
1
解决办法
3480
查看次数

使用`Rcpp`和/或`RcppArmadillo将`data.table`传递给c ++函数

有一种方法,以通过一个data.table使用对象来C++函数Rcpp和/或RcppArmadillo无需手动变换到data.table一个data.frame?在下面的示例中test_rcpp(X2),test_arma(X2)两者都失败了c++ exception (unknown reason).

R代码

X=data.frame(c(1:100),c(1:100))
X2=data.table(X)
test_rcpp(X)
test_rcpp(X2)
test_arma(X)
test_arma(X2)
Run Code Online (Sandbox Code Playgroud)

c ++函数

NumericMatrix test_rcpp(NumericMatrix X) {
    return(X);
}

mat test_arma(mat X) {
    return(X);
}
Run Code Online (Sandbox Code Playgroud)

r rcpp data.table

9
推荐指数
3
解决办法
3444
查看次数

将大型矩阵传递给RcppArmadillo函数而不创建副本(高级构造函数)

我想将一个大矩阵传递给一个RcppArmadillo函数(大约30,000*30,000)并且感觉这个过去只会消耗所有的性能提升.这里还提出了一个问题,建议使用带有copy_aux_mem = false参数的高级构造函数.这似乎也是一个很好的解决方案,因为我只需要从矩阵中读取行而不需要改变任何东西.我在正确实施解决方案时遇到问题.这可能只是一个简单的语法问题.

这是我当前设置的函数调用(当然简化):

#include <RcppArmadillo.h>

// [[Rcpp::depends(RcppArmadillo)]]
// [[Rcpp::export]]
arma::vec test(arma::mat M) {
    return(M.row(0))
}
Run Code Online (Sandbox Code Playgroud)

这是非常慢的大矩阵M(例如M=matrix(rnorm(30000*30000), nrow=30000, ncol=30000),所以我想使用这里记录的高级构造函数.语法是mat(aux_mem*, n_rows, n_cols, copy_aux_mem = true, strict = true)并且copy_aux_mem应该设置false为'传递引用'.我只是不确定语法功能定义.我该如何使用它arma::vec test(arma::mat M) {

r rcpp

8
推荐指数
2
解决办法
2100
查看次数

每个条形图的轴标签以及带有躲闪组的条形图中的每个组

我想创建一个条形图,使用ggplot2躲避组和轴标签的条形图(男性,女性)和组(研究1,研究2 ...).以下是我希望我的图表显示的方式:

在此输入图像描述

还有一些R代码.在这种情况下,仅在轴上标记组(而不是组内的条).轴上的条形标签基本上取代了图例.

x      = runif(8)
gender = factor(c("male","female","male","female","male","female","male","female"))
group  = c(0,0,1,1,2,2,3,3)
df     = data.frame(x,gender,group)

ggplot(df,aes(x=group,y=x,fill=gender)) + 
    geom_bar(stat="identity",position="dodge") + 
    scale_x_continuous("",breaks=c(0:3),
        labels=c('G1','G2','G3','G4'))
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

r ggplot2

7
推荐指数
1
解决办法
3719
查看次数

使用ggmap绘制形状文件:当shape文件大于ggmap时剪切

当我尝试将ggmap与shape文件组合时,我遇到了剪辑问题.Kahle和Wickham(2013:158)中的示例工作正常,因为ggmap中的栅格图像覆盖整个形状文件.下面是当我尝试在覆盖较小区域的ggmap图上绘制美国州的形状文件时会发生什么的示例.ggmap显示了纽约市,我希望用美国各州的边界覆盖它(仅作为示例).生成的地图没有任何意义.问题是形状文件被剪裁,ggplot连接未剪切的点.下面是代码.形状文件来自这里.我只是在这里展示最后的情节.

我怎么解决这个问题?

path <- "PATH TO SHAPEFILE"
library("ggmap")
library("rgdal")

# shapefile
states <- readOGR(dsn = path, layer = "states")
states_df <- fortify(states)
# plot shapefile
plot(states, lwd = 0.1)
ggplot(states_df, aes(long, lat, group = group)) +
    geom_polygon(colour = "black", fill = NA, size = 0.1)


# combine ggmap with shapefile
map <- get_map("new york city", zoom = 10, source = "stamen")
ggmap(map, extent = "device")

ggmap(map, extent = "device") +
    geom_polygon(aes(long, lat, group=group), data = states_df, colour = …
Run Code Online (Sandbox Code Playgroud)

r ggplot2 ggmap

7
推荐指数
1
解决办法
1986
查看次数

在文本编辑器中集成R linter的选项有哪些?lint in svTools,codetools等

我正在尝试使用l的linter扩展SublimeLinter .SublimeLinter在Sublime Text 2中为许多语言提供自动linting.目标是在背景中运行linter并突出显示编码错误或编码风格错误的行.

目前,我正在使用包中的lint功能svTools,它正在工作.然而,结果并不令人满意.linter捕获许多)行或许多}但它没有检测到未定义变量的使用,没有编码风格等.

还有其他选择吗?我知道这次讨论的写作A R皮棉程序,R CMD checkcodetools.但是我如何运行R CMD check普通的.r文件而不是包?飞行短绒应该使用哪些选项?还有其他想法吗?

谢谢!

编辑:该lint函数在检测错误的位置时似乎也不是很好,或者它基本上总是指示第1列.例如,在fn = function(...) { ]列中是1而不是]在结尾处.

ps:我知道这个lint函数是checkUsage()... 的包装器

coding-style r sublimetext sublimetext2

6
推荐指数
1
解决办法
1192
查看次数

是否有可能获得转换后的绘图数据?(例如点图中的点坐标,密度曲线)

我想知道是否有可能在ggplot2图表中获取转换后的数据?特别是,我有兴趣获得点图中点的坐标和大小,以便在另一个绘图库(d3.js)中使用它们.我该如何提取这些信息?

这是情节:

g=ggplot(data.frame(x=rnorm(100)), aes(x = x)) + geom_dotplot()
Run Code Online (Sandbox Code Playgroud)

现在我可以使用原始数据,g$data但我想要转换的数据(图中点的坐标).

谢谢!

r ggplot2

6
推荐指数
1
解决办法
728
查看次数