问题标签 [r-faq]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
r - 使用行、列索引从矩阵中索引值
我有一个mat
500 行 × 335 列的二维矩阵和一个 120425行的dat
data.frame。data.framedat
有两列I
和J
,它们是用于索引行、列的整数mat
。我想将值添加mat
到dat
.
这是我的概念失败:
(我在 Win32 上使用 R 2.13.1)。再深入一点,我发现我在滥用矩阵索引,因为我似乎只得到 的子矩阵mat
,而不是我预期的一维值数组,即:
我期待类似的东西int [1:100] 20 1 1 1 20 1 1 1 1 1 ...
。使用行、列索引来索引二维矩阵以获取值的正确方法是什么?
r - 为什么我不能得到小于 2.2e-16 的 p 值?
我在 R 中发现了 t-tests 和 chi-squared 这个问题,但我认为这个问题通常适用于其他测试。如果我做:
我得到:t = -64.6472, df = 18.998, p-value < 2.2e-16
。我从评论中知道-2.2e-16
的值是.Machine$double.eps
- 的最小浮点数1 + x != 1
,但当然 R 可以表示比这小得多的数字。我还从 R FAQ 知道 R 必须将浮点数舍入到 53 位二进制精度:R FAQ。
几个问题:(1)我将其读取为 53 位精度的二进制数字是否正确,或者 R 中的值< .Machine$double.eps
是否计算不准确?(2) 为什么在进行此类计算时,R 没有提供一种方法来显示 p 值的较小值,即使精度有所损失?(3) 有没有办法显示更小的 p 值,即使我失去了一些精度?对于单次测试,2 个十进制有效数字就可以了,对于我要 Bonferroni 正确的值,我需要更多。当我说“失去一些精度”时,我认为 < 53 个二进制数字,但是 (4) 我完全弄错了,任何 p 值< .Machine$double.eps
都非常不准确吗?(5) R 只是诚实而其他统计数据包不是吗?
在我的领域,非常小的 p 值是常态,一些例子: http : //www.ncbi.nlm.nih.gov/pubmed/20154341,http: //www.plosgenetics.org/article/info%3Adoi%2F10 .1371%2Fjournal.pgen.1002215这就是为什么我要表示如此小的 p 值。
感谢您的帮助,对于如此曲折的问题感到抱歉。
r - R因子的算术运算
我有一个 R 数据框,我试图从另一列中减去一列。我使用运算符提取列,$
但列的类是“因子”,R 不会对因子执行算术运算。是否有特殊功能可以做到这一点?
r - 如何在不重新启动 R 的情况下卸载包
我想卸载一个包而不必重新启动 R(主要是因为在我尝试不同的、冲突的包时重新启动 R 会令人沮丧,但可以想象这可以在程序中使用一个函数然后使用另一个函数——尽管命名空间对于这种用途,引用可能是一个更好的主意)。
?library
没有显示任何可以卸载包的选项。
有一个建议可以detach
卸载包,但是以下都失败了:
错误
detach(vegan)
:无效name
参数
错误
detach("vegan")
:无效name
参数
那么如何卸载包呢?
r - 错误:在 R 中找不到函数...
这是一个常见问题解答问题,因此请尽可能完整。答案是社区答案,因此如果您认为缺少某些内容,请随时进行编辑。
我正在使用 R 并尝试过some.function
,但收到以下错误消息:
这个问题经常出现。当你在 R 中遇到这种类型的错误时,你如何解决它?
r - 如何过滤数据框
我有一个数据框,并试图只选择我感兴趣的观察结果:
不幸的是,这个命令破坏了data.frame
结构并返回一个 long vector
。
我想要得到的是data.frame
不符合我的标准的观察结果的缩短。
r - 迁移 R 库
我想在 Linux 上将几个 R 库 (*) 从一个驱动器移动到另一个驱动器,并且想知道一个简单的移动是否可行且安全,或者我是否应该卸载并重新安装这些包。我意识到库的位置是.libPaths()
通过“R 安装和管理”手册来确定的,并查看了有关迁移库的信息,但没有看到推荐的过程。
我认为三个选项:
- 运行
remove.packages()
所有非基础包,并通过install.packages(lib = "/path/to/new/location")
. - 使用符号链接移动库(目录)
mv
并使用符号链接指向新位置(并最终删除符号链接) - 按照R 安装和管理手册中的建议,使用
mv
Linux 中的命令将目录批量移动和更新.Library.site
R_HOME/etc/Rprofile.site
选项#1 是直截了当的。选项 #2 应该可以工作,但似乎有点不合理。
#3 安全还是存在严重问题?我发现的问题是:目录权限以及任何包的设置存储绝对路径而不是相对路径的可能性(这似乎不合理且不必要)。
关于绝对路径的存储,我发现rJava
将 的位置存储R_HOME
在一个名为run
. 这本身不是库问题,但它表明一个包(以及一个好的包)保留了绝对路径的私有副本。
(*) 有几个库和许多包。自然,只有库(目录)被移动,但包可能会受到影响。
更新 1 / 澄清:只是为了澄清:我只是迁移库,而不是更改 R 的版本或包的版本。更新 R 或软件包可以单独完成,但问题只是移动库是否可行。似乎如果有必要更新或重新安装所有软件包以确保正确安装,那么这是一个更类似于选项 #1 而不是选项 #3 的路径。
更新2:另一个SO帖子的答案对如何在升级时避免这个问题有一些好主意。我没有升级 R,但 Dirk Eddelbuettel 建议不在 R 的文件树中安装软件包是明智的。
r - 如何将绘图保存为磁盘上的图像?
我使用 R 绘制了一个简单的线性回归。我想将该图像保存为 PNG 或 JPEG,是否可以自动执行?(通过代码)
有两个不同的问题:首先,我已经在我的显示器上查看情节,我想按原样保存它。其次,我还没有生成绘图,但我想在执行绘图代码时直接将其保存到磁盘。
r - 使用 ggplot2,我可以在轴上插入一个中断吗?
我想制作一个条形图,其中一个值比所有其他值大得多。有没有办法让y轴不连续?我的数据如下:
有没有办法让我的轴从 1-10 运行,然后从 490-500 运行?我想不出任何其他方式来绘制数据(除了转换它,我不想这样做)
[编辑 2019-05-06]:
8 年后,需要修改上述代码以使用 3.1.1 版本ggplot2
才能创建相同的图表:
r - 如何连接两个字符串?
如何连接(合并、组合)两个值?例如我有:
我的目标是将“tmp”中的两个值连接到一个字符串:
哪个功能可以为我做到这一点?