小编Pau*_*tra的帖子

显式调用函数返回或不调用

后面有一个,而我被指责西蒙Urbanek从R核心团队(我相信)用于推荐用户显式调用return的函数(他的评论被删除,虽然)的结尾:

foo = function() {
  return(value)
}
Run Code Online (Sandbox Code Playgroud)

相反,他建议:

foo = function() {
  value
}
Run Code Online (Sandbox Code Playgroud)

可能在这种情况下需要:

foo = function() {
 if(a) {
   return(a)
 } else {
   return(b)
 }
}
Run Code Online (Sandbox Code Playgroud)

他的评论揭示了为什么不打电话,return除非严格要求是好事,但这被删除了.

我的问题是:为什么不打电话return更快或更好,因此更可取?

r

189
推荐指数
7
解决办法
9万
查看次数

R和面向对象的编程

在R中,以这种或那种方式进行面向对象的编程非常有可能.但是,与Python不同,有很多方法可以实现面向对象:

我的问题是:

哪些主要差异在R中区分这些OO编程方式?

理想情况下,这里的答案将作为R程序员的参考,试图决定哪种OO编程方法最适合他们的需求.

因此,我要求根据经验以客观的方式提供细节,并以事实和参考作为后盾.用于阐明这些方法如何映射到标准OO实践的奖励点.

oop r

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

如何像源代码('myfile.r')那样获取R Markdown文件?

我经常有一个主R Markdown文件或knitr LaTeX文件,其中我source有一些其他R文件(例如,用于数据处理).但是,我认为在某些情况下,将这些源文件作为自己的可再现文档(例如,R Markdown文件不仅包括用于数据处理的命令,而且还生成可重复的文档来解释数据处理将是有益的.决定).

因此,我想source('myfile.rmd')在我的主R Markdown文件中有一个命令.这将提取和源代码的R代码块内的所有R代码myfile.rmd.当然,这会引起错误.

以下命令有效:

```{r message=FALSE, results='hide'}
knit('myfile.rmd', tangle=TRUE)
source('myfile.R')
```
Run Code Online (Sandbox Code Playgroud)

results='hide'如果需要输出,可以省略.即,从knitr输出的R代码myfile.rmdmyfile.R.

但是,它似乎并不完美:

  • 它导致创建一个额外的文件
  • 如果需要控制显示,它需要出现在它自己的代码块中.
  • 它并不像简单那么优雅source(...).

因此我的问题: 是否有更优雅的方式来获取R Markdown文件的R代码?

markdown r knitr

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

围绕点放置边框

我想使用ggplot2在散点图上的点周围放置黑色边框,这些点基于数据填充.另外,我想避免使用黑色边框的图例条目,因为它将在每个点上.基本上我正在寻找这个情节,但每个点周围都有黑色边框.

df <- data.frame(id=runif(12), x=1:12, y=runif(12))
ggplot(df, aes(x=x, y=y))+geom_point(aes(colour=id), size=12)
Run Code Online (Sandbox Code Playgroud)

我想要的情节,除了点周围没有边框

作为奖励,我希望没有黑色边框的传奇条目.我最好的尝试是:

df <- data.frame(id=runif(12), x=1:12, y=runif(12))
ggplot(df, aes(x=x, y=y))+geom_point(aes(fill=id, colour="black"), size=12)
Run Code Online (Sandbox Code Playgroud)

这使:

根本不是我想要的情节

我不明白为什么那不能给我我想要的东西,更糟糕的是(对于我在ggplot2中的教育)我不明白为什么它似乎没有将填充颜色映射到任何东西!有帮助吗?

也许如果我可以获得轮廓和填充映射,我可以使用像这里的最后一组数字中的那个黑客来关闭传说.

r ggplot2

51
推荐指数
4
解决办法
6万
查看次数

PHP is_null()和== null

在PHP中,PHP is_null==nullPHP 之间有什么区别?两者返回真实的资格是什么?

php null

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

在aes内的局部变量

aes当我用ggplot绘图时,我正在尝试使用局部变量.这是我的问题归结为本质:

xy <- data.frame(x=1:10,y=1:10)

plotfunc <- function(Data,YMul=2){
    ggplot(Data,aes(x=x,y=y*YMul))+geom_line()
}

plotfunc(xy)
Run Code Online (Sandbox Code Playgroud)

这会导致以下错误:

Error in eval(expr, envir, enclos) : object 'YMul' not found
Run Code Online (Sandbox Code Playgroud)

好像我不能使用局部变量(或函数参数)aes.可能是由于aes当局部变量超出范围后执行的内容会发生吗?我怎样才能避免这个问题(除了不使用局部变量aes)?

r ggplot2

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

查找特定日期属于哪个季节

我有一个日期矢量,每个条目,我想指定一个季节.例如,如果日期在21.12之间.和21.3.我会说那是winter.到目前为止,我已经尝试了以下代码,但无论一年如何,我都无法使其更通用.

my.dates <- as.Date("2011-12-01", format = "%Y-%m-%d") + 0:60
low.date <- as.Date("2011-12-15", format = "%Y-%m-%d")
high.date <- as.Date("2012-01-15", format = "%Y-%m-%d")

my.dates[my.dates <= high.date & my.dates >= low.date] 
 [1] "2011-12-15" "2011-12-16" "2011-12-17" "2011-12-18" "2011-12-19" "2011-12-20" "2011-12-21" "2011-12-22" "2011-12-23" "2011-12-24" "2011-12-25"
[12] "2011-12-26" "2011-12-27" "2011-12-28" "2011-12-29" "2011-12-30" "2011-12-31" "2012-01-01" "2012-01-02" "2012-01-03" "2012-01-04" "2012-01-05"
[23] "2012-01-06" "2012-01-07" "2012-01-08" "2012-01-09" "2012-01-10" "2012-01-11" "2012-01-12" "2012-01-13" "2012-01-14" "2012-01-15"
Run Code Online (Sandbox Code Playgroud)

我已经尝试格式化没有年份的日期,但它不起作用.

ld <- as.Date("12-15", format = "%m-%d")
hd <- as.Date("01-15", format = "%m-%d") …
Run Code Online (Sandbox Code Playgroud)

r date

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

如何在facet_grid中指定列或如何在facet_wrap中更改标签

我有大量的数据系列,我想用小倍数绘制.ggplot2的组合和facet_wrap我想要的,通常产生一个漂亮的小块6 x 6面.这是一个更简单的版本:

facet_wrap

问题是我对小面条上的标签没有足够的控制.数据框中列的名称很短,我希望保持这种方式,但我希望facet中的标签更具描述性.我可以使用,facet_grid以便我可以利用该labeller功能,但似乎没有直接的方式来指定列数和一长串的方面只是不适用于此特定任务.我错过了一些明显的东西吗

facet_grid

问:如何在不更改列名的情况下使用facet_wrap时更改构面标签?或者,如何在使用facet_grid时指定列数和行数?

下面是简化示例的代码.在现实生活中,我正在处理多个组,每个组包含数十个数据系列,每个系列都经常更改,因此任何解决方案都必须自动化,而不是依赖于手动分配值.

require(ggplot2)
require(reshape)

# Random data with short column names
set.seed(123)
myrows <- 30
mydf <- data.frame(date = seq(as.Date('2012-01-01'), by = "day", length.out = myrows),
                   aa = runif(myrows, min=1, max=2),
                   bb = runif(myrows, min=1, max=2),
                   cc = runif(myrows, min=1, max=2),
                   dd = runif(myrows, min=1, max=2),
                   ee = runif(myrows, min=1, max=2),
                   ff = runif(myrows, min=1, max=2))

# Plot using facet wrap - we want to specify the columns
# and …
Run Code Online (Sandbox Code Playgroud)

r ggplot2

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

如何判断R中的数据集何时过大?

我将在R中进行一些日志文件分析(除非我不能在R中执行),并且我理解我的数据需要适合RAM(除非我使用某种类型的修复,如关键字存储的接口,也许?).所以我想知道如何提前告诉我的数据将占用多少空间,以及我是否有足够的空间.我知道我有多少RAM(不是很大 - 在XP下3GB),而且我知道我的日志文件最终会有多少行和列,以及col条目应该是什么数据类型(这可能需要检查为它读).

如何将这一点整合到go/nogo决策中以便在R中进行分析?(据推测,R需要能够有一些RAM来进行操作,以及保存数据!)我的即时需求输出是一堆简单的汇总统计数据,频率,意外情况等,所以我可能会写一些解析器/制表器将为我提供短期需要的输出,但我也希望在下一步中使用许多不同的方法来处理这些数据,所以我正在研究使用R的可行性.

我已经在R中看到了很多有关R中大型数据集的有用建议,我已阅读并将重读,但现在我想更好地了解如何确定是否应该(a)去那里,(b)去但是我希望不得不做一些额外的事情让它变得易于管理,或者(c)在为时已晚之前逃跑并在其他语言/环境中做些事情(建议欢迎......!).谢谢!

r logfile-analysis bigdata

37
推荐指数
1
解决办法
5839
查看次数

在文件夹之间移动文件

我想使用R将文件从一个文件夹复制/粘贴到Windows中的另一个文件夹,但它不起作用.我的代码:

> file.rename(from="C:/Users/msc2/Desktop/rabata.txt",to="C:/Users/msc2/Desktop/Halwa/BADMASHI/SCOP/rabata.tx")

[1] FALSE
Run Code Online (Sandbox Code Playgroud)

file-io r file-copying

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

标签 统计

r ×9

ggplot2 ×3

bigdata ×1

date ×1

file-copying ×1

file-io ×1

knitr ×1

logfile-analysis ×1

markdown ×1

null ×1

oop ×1

php ×1