我正在寻找相反的get()
.
给定一个对象名称,我希望有一个表示该对象的字符串直接从该对象中提取.
foo
作为我正在寻找的功能的占位符的简单示例.
z <- data.frame(x=1:10, y=1:10)
test <- function(a){
mean.x <- mean(a$x)
print(foo(a))
return(mean.x)}
test(z)
Run Code Online (Sandbox Code Playgroud)
会打印:
"z"
Run Code Online (Sandbox Code Playgroud)
我的工作,在我目前的问题中更难实现的是:
test <- function(a="z"){
mean.x <- mean(get(a)$x)
print(a)
return(mean.x)}
test("z")
Run Code Online (Sandbox Code Playgroud) 我有一个data.frame,其中某些变量包含文本字符串.我希望计算每个字符串中给定字符的出现次数.
例:
q.data<-data.frame(number=1:3, string=c("greatgreat", "magic", "not"))
Run Code Online (Sandbox Code Playgroud)
我希望为q.data创建一个新列,其中包含字符串中"a"的出现次数(即c(2,1,0)).
我管理的唯一令人费解的方法是:
string.counter<-function(strings, pattern){
counts<-NULL
for(i in 1:length(strings)){
counts[i]<-length(attr(gregexpr(pattern,strings[i])[[1]], "match.length")[attr(gregexpr(pattern,strings[i])[[1]], "match.length")>0])
}
return(counts)
}
string.counter(strings=q.data$string, pattern="a")
number string number.of.a
1 1 greatgreat 2
2 2 magic 1
3 3 not 0
Run Code Online (Sandbox Code Playgroud) 我经常有刻面的数值.我希望提供足够的信息来解释补充标题中的这些分面值,类似于轴标题.贴标签选项重复了许多不必要的文本,并且对于较长的变量标题不可用.
有什么建议?
默认值:
test<-data.frame(x=1:20, y=21:40, facet.a=rep(c(1,2),10), facet.b=rep(c(1,2), each=20))
qplot(data=test, x=x, y=y, facets=facet.b~facet.a)
Run Code Online (Sandbox Code Playgroud)
我想要的是:
我能在ggplot中做得最好:
qplot(data=test, x=x, y=y)+facet_grid(facet.b~facet.a, labeller=label_both)
Run Code Online (Sandbox Code Playgroud)
如@Hendy所示,类似于: 在ggplot2图中添加辅助y轴 - 使其完美
如何直接从github存储库安装正在开发的软件包,一旦安装,如何在开发和CRAN版本之间切换?
我有兴趣从git安装的特定包是ggplot2.
给定一个字符串
test_1<-"abc def,ghi klm"
test_2<-"abc, def ghi klm"
Run Code Online (Sandbox Code Playgroud)
我想获得
"abc"
"def"
"ghi"
Run Code Online (Sandbox Code Playgroud)
但是,使用strsplit时,必须知道字符串中拆分值的顺序,因为strsplit使用第一个值进行第一次拆分,第二次执行第二次拆卸...然后循环使用.
但这不是:
strsplit(test_1, c(",", " "))
strsplit(test_2, c(" ", ","))
strsplit(test_2, split=c("[:punct:]","[:space:]"))[[1]]
Run Code Online (Sandbox Code Playgroud)
我想在一个步骤中找到任何分裂值的地方拆分字符串.
为了提供可重现的方法示例,通常必须提供数据集.我希望使用一些自己的数据,而不是构建示例数据集.但是这些数据无法发布.我希望用无信息的占位符替换变量(列)名称和因子级别(例如,V1 .... V5,L1 ...... L5).
这是一种自动化的方法吗?
理想情况下,这将在R中完成,接收data.frame并生成此匿名data.frame.
使用这样的数据集,只需在脚本中搜索和替换变量名称,就可以获得可公开发布的可重现的示例.
这样的过程可以增加在可重复的示例中包含适当的数据,甚至在问题,评论和错误报告中包含可重现的示例.
如果参数空间只是整数(或者是不连续的),如何优化?
在optim()中使用整数检查似乎不起作用,反正效率非常低.
fr <- function(x) { ## Rosenbrock Banana function
x1 <- x[1]
x2 <- x[2]
value<-100 * (x2 - x1 * x1)^2 + (1 - x1)^2
check.integer <- function(N){
!length(grep("[^[:digit:]]", as.character(N)))
}
if(!all(check.integer(abs(x1)), check.integer(abs(x2)))){
value<-NA
}
return(value)
}
optim(c(-2,1), fr)
Run Code Online (Sandbox Code Playgroud) 我正在寻找一种有效的(计算机资源方面和学习/实现方式)方法来合并两个更大的(大小> 100万/ 300 KB RData文件)数据帧.
基础R中的"merge"和plyr中的"join"似乎耗尽了我的所有内存,有效地崩溃了我的系统.
示例
负载测试数据框
并尝试
test.merged<-merge(test, test)
Run Code Online (Sandbox Code Playgroud)
要么
test.merged<-join(test, test, type="all")
Run Code Online (Sandbox Code Playgroud)
以下帖子提供了合并和备选方案的列表:
如何连接(合并)数据框(内部,外部,左侧,右侧)?
以下允许对象大小检查:https:
//heuristically.wordpress.com/2010/01/04/r-memory-usage-statistics-variable/
匿名制作的数据
我想在主题之间插入两个没有任何空间的图(因此它们共用一个轴).
鉴于:
p1 <- qplot(1,1,xlab="")
p1 <- p1 +
theme(legend.position="none",
axis.text.x=element_blank(),
axis.ticks.x=element_blank(),
plot.margin=unit(c(1,1,0,1), "cm"),
panel.margin=unit(c(1,1,0,1), "cm"))
p2 <- qplot(1,2)
grid.arrange(p1,p2)
Run Code Online (Sandbox Code Playgroud)
哪个产生:
我想消除两个地块之间的空白区域.
我有调整高度的印象,就像宽度所做的那样:左对齐两个图形边缘(ggplot)是解决方案,但无法弄明白.
虽然发送到PDF的R图可以在插图或页面布局软件中随意重新调整,但科学期刊通常坚持提供的图表具有特定的尺寸.
所有绘图元素的大小可以直接在R中在给定的PDF大小内缩放吗?
require(ggplot2)
p <- qplot(data=iris,
x=Petal.Width,
y=Petal.Length,
colour=Species)
pdf("./test_plot_default.pdf")
print(p)
graphics.off()
Run Code Online (Sandbox Code Playgroud)
生成适当的绘图元素缩放
但是,更改PDF大小元素不会导致绘图元素缩放.对于较小的PDF,绘图元素与绘图空间相比过度放大.
pdf("./test_plot_dimentionsions required by journal.pdf", width=3, height=3)
print(p)
graphics.off()
Run Code Online (Sandbox Code Playgroud)
使用@Rosen Matev建议:
update_geom_default("point", list(size=1))
theme_set(theme_grey(base_size=6))
pdf("./test_plot_dimentionsions required by journal.pdf", width=3, height=3)
print(p)
graphics.off()
Run Code Online (Sandbox Code Playgroud)