小编Bra*_*sen的帖子

格式化R中的小数位数

我有一个数字,例如1.128347132904321674821,我想在输出到屏幕(或写入文件)时只显示两位小数.怎么做到这一点?

x <- 1.128347132904321674821
Run Code Online (Sandbox Code Playgroud)

编辑:

指某东西的用途:

options(digits=2)
Run Code Online (Sandbox Code Playgroud)

已被建议作为可能的答案.有没有办法在脚本中指定一次性使用?当我将它添加到我的脚本时,它似乎没有做任何不同的事情,我对很多重新键入格式化每个数字感兴趣(我正在自动化一个非常大的报告).

-

答案:round(x,digits = 2)

formatting r rounding r-faq

238
推荐指数
8
解决办法
47万
查看次数

仅选择数据框中的数字列

假设你有一个像这样的data.frame:

x <- data.frame(v1=1:20,v2=1:20,v3=1:20,v4=letters[1:20])
Run Code Online (Sandbox Code Playgroud)

您如何仅选择x中的数字列?

r

165
推荐指数
7
解决办法
16万
查看次数

在函数中使用`...`(三点或点点)

我在哪里可以找到有关...函数用法的文档?例子很有用.

r ellipsis

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

在data.frame()中移动列而无需重新输入

是否有一种方法可以将列从data.frame中的一个位置移动到下一个位置 - 而无需键入全新的data.frame()

例如:

a <- b <- c <- d <- e <- f <- g <- 1:100
df <- data.frame(a,b,c,d,e,f,g)
Run Code Online (Sandbox Code Playgroud)

现在让我们说我想在"一个"面前"g"

我可以重新输入它

df <- data.frame(g,a,b,c,d,e,f)
Run Code Online (Sandbox Code Playgroud)

但是没有更快的方法吗?(想象一下1500+列)

r

55
推荐指数
6
解决办法
7万
查看次数

ggplot2:排序一个情节

我有一个data.frame,从最高到最低排序.例如:

x <- structure(list(variable = structure(c(10L, 6L, 3L, 4L, 2L, 8L, 
9L, 5L, 1L, 7L), .Label = c("a", "b", "c", "d", "e", "f", "g", 
"h", "i", "j"), class = c("ordered", "factor")), value = c(0.990683229813665, 
0.975155279503106, 0.928571428571429, 0.807453416149068, 0.717391304347826, 
0.388198757763975, 0.357142857142857, 0.201863354037267, 0.173913043478261, 
0.0496894409937888)), .Names = c("variable", "value"), row.names = c(10L, 
6L, 3L, 4L, 2L, 8L, 9L, 5L, 1L, 7L), class = "data.frame")

ggplot(x, aes(x=variable,y=value)) + geom_bar(stat="identity") + 
 scale_y_continuous("",label=scales::percent) + coord_flip() 
Run Code Online (Sandbox Code Playgroud)

现在,数据很好并且排序,但是当我绘制时,它按因子排序.这很烦人,我该如何解决?

r ggplot2

55
推荐指数
4
解决办法
9万
查看次数

初始化data.frames()

有没有快速初始化空数据框的方法?如果您知道尺寸是多少?例如:

假设我想要一个包含100行和10行的空白数据框:

x <- data.frame(1:100,2,3,4,5,6,7,8,9,10) 
dim(x) ## that's right
Run Code Online (Sandbox Code Playgroud)

但是假设我想要300列的东西?如何快速初始化data.frame中的列?

x <- data.frame(1:100,2,3,4,5 ....) ## *cries*
Run Code Online (Sandbox Code Playgroud)

r

53
推荐指数
2
解决办法
10万
查看次数

学习R.一个人从哪里开始?

我已经使用R一年多一点了,这是一次成功的冒险.但是,我经常发现,由于不知道如何找到它或它的一个例子,我无法弄清楚.

堆栈溢出,

您是否可以推荐一种学习R的途径,以便为其提供一个工具集来解决统计问题?

在互联网上,r项目网站和邮件列表之间有丰富的知识,但它似乎"无处不在",而且当你真正寻找它时无处可去.

例如,当我第一次开始使用R时,我经历了"Intro to R".然后我读了语言定义(显然没有沉没).但是每当我在Stackoverflow上问一个问题时,我都会遇到一些新的badass函数,它可以解决我在短期内遇到的所有问题.我的问题是,您是如何知道这些功能首先存在的?如何找到它们?据推测,你读过一些东西或找到一些资源,使你的学习成为曲线的指数部分.它以前如何?

显然,R作为统计工具的功能很广泛.出于我自己的目的,我主要从事经济或财务数据.因此,考虑到这一点的答案将是最有帮助的.

r

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

R Packaging中的inst和extdata文件夹

在文档中,R建议放入原始数据文件(不是Rdata或Rda) inst/extdata/

来自第一段:http://cran.r-project.org/doc/manuals/R-exts.html#Data-in-packages

data子目录用于数据文件,要么通过延迟加载提供,要么使用data()加载.(选择是由DESCRIPTION文件中的'LazyData'字段进行的:默认情况下不会这样做.)它不应该用于包所需的其他数据文件,并且约定已经成长为使用目录inst /这些文件的extdata.

所以,我已将所有原始数据移动到此文件夹中,但是当我构建并重新加载包然后尝试使用(例如)访问函数中的数据时:

read.csv(file=paste(path.package("my_package"),"/inst/extdata/my_raw_data.csv",sep="")) 
# .path.package is now path.package in R 3.0+
Run Code Online (Sandbox Code Playgroud)

我收到"无法打开文件"错误.

但是,它确实看起来/extdata在包目录中调用了一个文件夹,其中包含文件(构建后和安装后).该/inst文件夹发生了什么?

/ inst文件夹中的所有内容都会被推入/包中吗?

r package

41
推荐指数
2
解决办法
1万
查看次数

处理凌乱的日期

我希望你不认为我是在寻求关系建议.

我不得不为调查受访者提供指定事件发生时间的能力.什么结果是一个可怕的凌乱的字符串,老实说,我不知道该怎么做.超越手工编码.

这是一个简短的样本,数以千计:

c("May2/ 12 noon", "9:45 am", "11:00 AM AST", "April 27 / 12:00 AST", 
"11:40 AM AST", "April 25 2011", "April 12th 2011 / 8:44", "April 12 2011 / 8:36am", 
"April 12 2011 / 8:30am", "April 12th 2011 / 8:18", "April 12 2011 / 8:12am", 
"April 11th 2011 / 5:57pm", "April 11th 2011 / 5:49pm", "April 11th 2011 / 5:42pm", 
"April 11th 2011 / 5:36pm", "April 11th 2011 / 5:27", "April 5 @ 11:26am", 
"8:50", "April 4th 12:45pm", …

r

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

如何为ggplot图编写测试

我有很多生成绘图的函数,通常使用ggplot2.现在,我正在生成情节并测试基础数据.但我想知道是否有合理的方法来测试该图包含我期望的图层/选项或图形元素是否符合预期.

例如:

library(ggplot2)
library(scales) # for percent()
library(testthat)

df <- data.frame(
  Response = LETTERS[1:5],
  Proportion = c(0.1,0.2,0.1,0.2,0.4)
)

#' @export plot_fun
plot_fun <- function(df) {
  p1 <- ggplot(df, aes(Response, Proportion)) +
    geom_bar(stat='identity') + 
    scale_y_continuous(labels = percent)
return(p1)
}

test_that("Plot returns ggplot object",{
  p <- plot_fun(df)
  expect_is(p,"ggplot")
})

test_that("Plot uses correct data", {
  p <- plot_fun(df)
  expect_that(df, equals(p$data))

})
Run Code Online (Sandbox Code Playgroud)

这就是我被困住的地方

test_that("Plot layers match expectations",{
  p <- plot_fun(df)
  expect_that(...,...)
})

test_that("Scale is labelled percent",{
  p <- plot_fun(df)
  expect_that(...,...)
})
Run Code Online (Sandbox Code Playgroud)

也许有更直接的方法?

testing unit-testing r ggplot2 testthat

33
推荐指数
3
解决办法
3075
查看次数

标签 统计

r ×10

ggplot2 ×2

ellipsis ×1

formatting ×1

package ×1

r-faq ×1

rounding ×1

testing ×1

testthat ×1

unit-testing ×1