是否可以使用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) 我只是花了一些时间研究data.tableR,并且想知道我可以期待最大性能提升的条件.也许简单的答案是当我有一个大型data.frame并经常在这个data.frame的子集上运行.当我只是加载数据文件和估计模型时,我不能期望太多,但许多[操作会产生差异.这是真的吗,唯一的答案还是我应该考虑什么?什么时候开始重要?10x5,1,000x5,1,000,000x5?
编辑:一些评论表明,这data.table通常更快,同样重要,几乎从不慢.因此,知道何时不使用也是一件好事data.table.
如何在一个图中缩小两个参考线之间的间隙.在下面的示例中,两个指南来自颜色和大小比例,我想更改两者之间的间隙,以便标题"大小"正好位于图例点下方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)
编辑:这是情节.我想通过绿线突出显示间隙,箭头更小.

为什么这不起作用?
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) 有一种方法,以通过一个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) 我想将一个大矩阵传递给一个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) {?
我想创建一个条形图,使用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)

当我尝试将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) 我正在尝试使用l的linter扩展SublimeLinter .SublimeLinter在Sublime Text 2中为许多语言提供自动linting.目标是在背景中运行linter并突出显示编码错误或编码风格错误的行.
目前,我正在使用包中的lint功能svTools,它正在工作.然而,结果并不令人满意.linter捕获许多)行或许多}但它没有检测到未定义变量的使用,没有编码风格等.
还有其他选择吗?我知道这次讨论的写作A R皮棉程序,R CMD check和codetools.但是我如何运行R CMD check普通的.r文件而不是包?飞行短绒应该使用哪些选项?还有其他想法吗?
谢谢!
编辑:该lint函数在检测错误的位置时似乎也不是很好,或者它基本上总是指示第1列.例如,在fn = function(...) { ]列中是1而不是]在结尾处.
ps:我知道这个lint函数是checkUsage()... 的包装器
我想知道是否有可能在ggplot2图表中获取转换后的数据?特别是,我有兴趣获得点图中点的坐标和大小,以便在另一个绘图库(d3.js)中使用它们.我该如何提取这些信息?
这是情节:
g=ggplot(data.frame(x=rnorm(100)), aes(x = x)) + geom_dotplot()
Run Code Online (Sandbox Code Playgroud)
现在我可以使用原始数据,g$data但我想要转换的数据(图中点的坐标).
谢谢!
r ×10
ggplot2 ×4
data.table ×2
dplyr ×2
rcpp ×2
coding-style ×1
ggmap ×1
magrittr ×1
sublimetext ×1
sublimetext2 ×1