小编Wal*_*cio的帖子

在运行install.packages()之前检查已安装的软件包

我有一个R脚本,与不同计算机上的多个用户共享.其中一行包含install.packages("xtable")命令.

问题是,每次有人运行脚本时,R都会花费大量时间显然重新安装软件包(实际上确实需要一些时间,因为实际案例中有几个软件包的向量).

如何首先检查软件包是否已安装,然后仅install.packages()针对那些软件包运行?

packages r

128
推荐指数
9
解决办法
14万
查看次数

如何指定实际的x轴值,以在R中绘制为x轴刻度

我在R中创建一个图,我不喜欢由R绘制的x轴值.

例如:

x <- seq(10,200,10)
y <- runif(x)

plot(x,y)
Run Code Online (Sandbox Code Playgroud)

这绘制了一个在X轴上具有以下值的图形:

50, 100, 150, 200

但是,我想将10,20, 30 ... 200存储在变量x中的20个值绘制为X轴值.我已经浏览了无数的博客和简洁的手册 - 经过几个小时的搜索,我最接近发现任何有用的东西是以下(摘要)说明:

  1. 调用plot()par()指定参数xaxt='n'
  2. axis()例如axis(side = 1, at = seq(0, 10, by = 0.1), labels = FALSE, tcl = -0.2)

我尝试了它,结果绘图根本没有x轴值.是否有人可以知道如何做到这一点?我无法相信以前没有人试过这样做过.

plot r

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

不需要命名空间依赖项

我正在尝试构建一个R包,以便阅读CRAN上的手册.我可以弄清楚使用导入来加载命名空间中的函数将是在Description文件中使用的最佳选择.添加到描述文件后,我还将其添加到命名空间文件中.我将importFrom添加到具有所需功能的命名空间文件中.

现在,当我在我的包装上运行R CMD检查时,我得到了一个错误

不需要命名空间依赖项:'ggplot2'

更多信息:即使我将包添加到描述文件中的Depends,它们也不会被加载.

请帮忙.

请在下面找到我的描述文件

Package: bigpackage
Type: Package
Title: Some title
Version: 1.0
Date: 2012-10-25
Author: Mayank Bansal
Maintainer: somename
Imports : R(>= 2.15.1), SweaveListingUtils( >=0.5.5),xtable(>=1.7-0),
        brew(>=1.0-6), knitr(>=0.8), RHive(>= 0.0-6), ggplot2(>=0.9.2)
        , brew, knitr
SystemRequirements : LaTeX(texi2dvi) must be present in the system to
        create PDF reports
Description: Some Description
License: file LICENSE
LazyLoad: yes
ByteCompile: true
OS_type : unix
Run Code Online (Sandbox Code Playgroud)

r

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

如何检查两个数据帧是否相等

假设我在R中有大型数据集,我只想知道它们中的两个是否相同.当我尝试不同的算法来实现相同的结果时,我经常使用它.例如,假设我们有以下数据集:

df1 <- data.frame(num = 1:5, let = letters[1:5])
df2 <- df1
df3 <- data.frame(num = c(1:5, NA), let = letters[1:6])
df4 <- df3
Run Code Online (Sandbox Code Playgroud)

所以这就是我比较它们的方法:

table(x == y, useNA = 'ifany')
Run Code Online (Sandbox Code Playgroud)

当数据集没有NA时,哪种方法很有用:

> table(df1 == df2, useNA = 'ifany')
TRUE 
  10 
Run Code Online (Sandbox Code Playgroud)

但是,当他们有NA时,不是那么多:

> table(df3 == df4, useNA = 'ifany')
TRUE <NA> 
  11    1 
Run Code Online (Sandbox Code Playgroud)

在这个例子中,很容易将其NA视为不是问题,因为我们知道两个数据帧都是相同的.问题在于NA == <anything>收益率NA,因此每当其中一个数据集有一个数据集时,无论另一个数据集NA在同一个位置上有什么关系,结果总是如此NA.

因此,使用table()比较数据集对我来说似乎并不理想.如何更好地检查两个数据帧是否相同?

PS:注意这不是R的重复- 比较几个数据集,比较R中的2个数据集或 …

database compare r dataset dataframe

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

如何从数据框中删除未使用的级别?

给出以下模拟数据:

set.seed(123)
x <- data.frame(let = sample(letters[1:5], 100, replace = T), 
                num = sample(1:10, 100, replace = T))
y <- subset(x, let != 'a')
Run Code Online (Sandbox Code Playgroud)

创建y$let收益表

a  b  c  d  e 
0 20 21 22 18
Run Code Online (Sandbox Code Playgroud)

但我不想a再表现出来了.如果我尝试这样做:

levels(y$let) <- factor(y$let)
Run Code Online (Sandbox Code Playgroud)

我弄乱频率,因为现在table(y$let)给了我

b  d  c  e 
0 20 21 40 
Run Code Online (Sandbox Code Playgroud)

我知道我可以做到xtabs(~ y$let, drop.unused.levels = T)并解决这个问题,但它并没有重置核心的变量级别(这对我很重要,因为这是我对数据集的一个早期改变,它将继续贯穿始终整个分析).而且,这xtabs是一个不同的类table,这将使我在项目后期头痛.

问题是:我如何自动更改,levels(y$let)以便它不显示创建子集时丢弃的级别?在这种情况下,我该如何展示[1] "b" "c" "d" "e"

r levels

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

删除重复项,保持具有最大绝对值的条目

假设我有四个样本:id = 1,2,3和4,每个样本都有一个或多个测量值:

> a <- data.frame(id=c(1,1,2,2,3,4), value=c(1,2,3,-4,-5,6))
> a
  id value
1  1     1
2  1     2
3  2     3
4  2    -4
5  3    -5
6  4     6
Run Code Online (Sandbox Code Playgroud)

我想删除重复项,每个ID只保留一个条目 - 具有"value"列绝对值最大的条目.即,这就是我想要的:

> a[c(2,4,5,6), ]
  id value
2  1     2
4  2    -4
5  3    -5
6  4     6
Run Code Online (Sandbox Code Playgroud)

我怎么能在R中这样做?

r duplicates duplicate-removal

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

如何用python打印多行文本

如果我想在Python中打印多行文本而不键入print('')每一行,有没有办法做到这一点?我正在将它用于ASCII艺术.

(python 3.5.1)

python python-3.x

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

在R中,我可以停止打印(cat(""))返回NULL吗?为什么cat("foo")会返回foo>

如果我进入

print(cat(""))
Run Code Online (Sandbox Code Playgroud)

我明白了

NULL
Run Code Online (Sandbox Code Playgroud)

我想用来cat()打印R脚本的进度,但我不明白为什么它会NULL在我所有连接字符串的末尾返回,更重要的是,如何让它停止?

r concatenation paste cat

18
推荐指数
4
解决办法
2万
查看次数

R:无效的下标类型'list'

我正在尝试使用数据集的已排序列的索引.我想按一个排序列重新排序整个数据集.

area.sort<-sort(xsample$area1, index.return=TRUE)[2]
Run Code Online (Sandbox Code Playgroud)

输出是一个列表,所以我不能在整个数据集中使用它索引.

Error in xj[i] : invalid subscript type 'list'
Run Code Online (Sandbox Code Playgroud)

有人建议使用unlist但我无法摆脱ix*.有任何想法吗?谢谢

> area.sort<-unlist(area.sort)

 ix1   ix2   ix3   ix4   ix5   ix6   ix7   ix8   ix9  ix10  ix11  ix12  ix13 
  45    96    92    80    53    54    24    21    63    81    40    66    64 
Run Code Online (Sandbox Code Playgroud)

r list subscript

16
推荐指数
1
解决办法
5万
查看次数

R:xtable标题(或评论)

我想在我打印的表格下面发表评论,xtable.我认为最好的选择是使用"标题"选项:xtable(tablename, caption="This is a caption").但这是以某种方式自动放入"表1",因此输出如下:

表1:这是一个标题.

是否有任何方法可以抑制这种或任何更简单的方式将注释简单地作为表中的附加最后一行?

r xtable

14
推荐指数
1
解决办法
8437
查看次数