我有以下问题:我想在箱线图上可视化离散和连续变量,其中后者具有一些极高的值.这使得箱形图无意义(图表中的点甚至"主体"太小),这就是为什么我想以log10的比例显示它.我知道我可以忽略可视化中的极值,但我并不打算这样做.
让我们看一个钻石数据的简单例子:
m <- ggplot(diamonds, aes(y = price, x = color))
Run Code Online (Sandbox Code Playgroud)

问题在这里并不严重,但我希望你能想象为什么我希望以log10的比例看到这些值.我们来试试吧:
m + geom_boxplot() + coord_trans(y = "log10")
Run Code Online (Sandbox Code Playgroud)

正如您所看到的那样,y轴是log10缩放并且看起来很好但是x轴存在问题,这使得绘图非常奇怪.
问题不会发生scale_log,但这不是我的选择,因为我不能这样使用自定义格式化程序.例如:
m + geom_boxplot() + scale_y_log10()
Run Code Online (Sandbox Code Playgroud)

我的问题:有没有人知道在y轴上用log10刻度绘制boxplot的解决方案,标签可以用formatter这个线程中的函数自由格式化?
根据答案和评论编辑问题以帮助回答者:
我真正追求的是:一个log10转换轴(y)没有科学标签.我想将它标记为美元(formatter=dollar)或任何自定义格式.
如果我尝试@ hadley的建议,我会收到以下警告:
> m + geom_boxplot() + scale_y_log10(formatter=dollar)
Warning messages:
1: In max(x) : no non-missing arguments to max; returning -Inf
2: In max(x) : no non-missing arguments to max; returning -Inf
3: In max(x) : no non-missing arguments to max; …Run Code Online (Sandbox Code Playgroud) 我有一些R脚本,我必须尽快在R中加载几个数据帧.这非常重要,因为读取数据是程序中最慢的部分.例如:从不同的数据帧绘图.我以sav(SPSS)格式获取数据,但我可以将其转换为建议的任何格式.不幸的是,合并数据帧不是一个选项.
什么是加载数据的最快方法?我在考虑以下几点:
read.spss.attr变量的任何自定义值(例如来自Spss导入文件的variable.labels)吗?或者这应该在一个单独的表中完成?欢迎任何其他想法.感谢您提前提出的每一个建议!
我根据你给出的答案在下面做了一个小实验,并且还添加了(24/01/2011)一个非常"hackish"但非常快速的解决方案,只从一个特殊的二进制文件中加载几个变量/列.后者似乎是我现在能想象的最快的方法,这就是为什么我编写了一个名为save的小包来处理这个功能(05/03/2011:ver.0.3).该套餐正在"重"开发,欢迎任何推荐!
在microbenchmark软件包的帮助下,我将很快发布一个具有准确基准测试结果的小插图.
我有一个数据帧df:
var1 var2
"test" "testing"
"esten" "etsen"
"blest" "estten"
Run Code Online (Sandbox Code Playgroud)
现在我要删除df中的所有"t"以获取:
var1 var2
"es" "esing"
"esen" "esen"
"bles" "esen"
Run Code Online (Sandbox Code Playgroud)
我怎么做?
我使用Roxygen来生成正在开发的包的Rd文件,但是我的函数默认参数设置为' \n',例如:
lineCount <- function(text, sep='\n') {
...
}
Run Code Online (Sandbox Code Playgroud)
用于计算'\n'字符串中的新line()字符的目的是什么.问题是R CMD检查发出警告:
Codoc mismatches from documentation object 'lineCount':
lineCount
Code: function(text, sep = "\n")
Docs: function(text, sep = " ")
Mismatches in argument default values:
Name: 'sep' Code: "\n" Docs: " "
Run Code Online (Sandbox Code Playgroud)
在我看来,这个问题是由写入Rd文件引起的(写入标准的LaTeX文件cat()总是需要为某种目的双重转义字符,例如:\\newline - 正如我所经历的那样).如果我在分隔符上添加一个额外的反斜杠,例如:
lineCount <- function(text, sep='\\n') {
...
}
Run Code Online (Sandbox Code Playgroud)
这个问题仍然存在,就像它看起来的代码一样'\\n',但在文档(Rd文件)中它看起来像'\n'.
我的问题有一个简单的解决方案吗?可能是Roxygen中的额外标签,它可以定义如何将函数的参数写入Rd文件?对不起,如果被问到太明显的问题,但我在谷歌ing一段时间后迷路了.
历史:http://permalink.gmane.org/gmane.comp.lang.r.roxygen/24
更新:使用roxygen2!
我喜欢在运行慢for循环时使用进度条.这可以通过几个助手轻松完成,但我确实喜欢tkProgressBar来自tcltk包.
一个小例子:
pb <- tkProgressBar(title = "Working hard:", min = 0, max = length(urls), width = 300)
for (i in 1:300) {
# DO SOMETHING
Sys.sleep(0.5)
setTkProgressBar(pb, i, label=paste( round(i/length(urls)*100, 0), "% ready!"))
}
close(pb)
Run Code Online (Sandbox Code Playgroud)
而且我想设置一个小函数存储在我的.Rprofile中,命名为forp(as:for循环带进度条),调用就像for但是使用自动添加的进度条 - 但遗憾的是不知道如何实现和抓取expr部分循环函数.我做了一些实验do.call但没有成功:(
虚构的工作示例(其作用类似于for循环,但TkProgressBar在每次迭代中创建并自动更新它):
forp (i in 1:10) {
#do something
}
Run Code Online (Sandbox Code Playgroud)
更新:我认为问题的核心是如何编写一个函数,该函数不仅在函数后面的括号中有参数(如:)foo(bar),而且还可以expr在结束括号后指定,如:foo(bar) expr.
BOUNTY OFFER:会找到任何可以修改我建议的函数的 …
我有一个方形矩阵,有几万行和一列,只有几1吨0,所以我用这个Matrix包以高效的方式存储在R中.由于base::matrix内存不足,对象无法处理该数量的单元格.
我的问题是我需要逆矩阵以及此类矩阵的Moore-Penrose广义逆,这是我目前无法计算的.
我尝试过的:
solve产生Error in LU.dgC(a) : cs_lu(A) failed: near-singular A (or out of memory)错误MASS::ginv与Matrix班级不相容Matrix为例如bigmemory::big.matrix,而后者也MASS::ginv无论如何也无法工作如果我尝试计算矩阵的Choleski分解以便稍后调用Matrix::chol2inv它,我会收到以下错误消息:
Error in .local(x, ...) :
internal_chm_factor: Cholesky factorization failed
In addition: Warning message:
In .local(x, ...) :
Cholmod warning 'not positive definite' at file ../Cholesky/t_cholmod_rowfac.c, line 431
Run Code Online (Sandbox Code Playgroud)基于相关问题,我还尝试pbdDMAT了单个节点上的包,但pbdDMAT::chol产生了Cholmod error …
R中是否有标准函数来转换表示字节数的字符串,例如
到整数个字节?
我humanReadable在包gdata中遇到过,但这反过来又转换了.我知道我可以解析字符串,然后自己做数学,但我想知道是否已存在某些东西.
我想要在研究的每个条件中简单计算受试者的数量.数据看起来像这样:
subjectid cond obser variable
1234 1 1 12
1234 1 2 14
2143 2 1 19
3456 1 1 12
3456 1 2 14
3456 1 3 13
etc etc etc etc
Run Code Online (Sandbox Code Playgroud)
这是一个大型数据集,并不总是很明显有多少独特的主题对每种情况有贡献等.
我在data.frame中有这个.
我想要的是类似的东西
cond ofSs
1 122
2 98
Run Code Online (Sandbox Code Playgroud)
对于每个"条件",我得到对该条件贡献数据的唯一S数的计数.看起来这应该是非常简单的.
r ×10
benchmarking ×1
boxplot ×1
byte ×1
dataframe ×1
expression ×1
function ×1
ggplot2 ×1
large-data ×1
load ×1
loops ×1
pander ×1
performance ×1
replace ×1
roxygen ×1
wrapper ×1