Questions tagged «r»

R是一种免费的开源编程语言和软件环境,用于统计计算,生物信息学,可视化和通用计算。请提供最少且可复制的示例以及所需的输出。使用`dput()`作为数据,并通过`library()`调用指定所有非基本包。不要为数据或代码嵌入图片,而应使用缩进的代码块。对于统计相关的问题,请使用https://stats.stackexchange.com。

10
如何查看功能的源代码?
我想查看功能的源代码以了解其工作原理。我知道我可以通过在提示符下键入函数名称来打印该函数: > t function (x) UseMethod("t") <bytecode: 0x2332948> <environment: namespace:base> 在这种情况下,是什么UseMethod("t")意思?如何找到这实际上是正在使用的源代码,例如:t(1:10)? 有没有当我看到之间的差异UseMethod,当我看到standardGeneric和showMethods,与with? > with standardGeneric for "with" defined from package "base" function (data, expr, ...) standardGeneric("with") <bytecode: 0x102fb3fc0> <environment: 0x102fab988> Methods may be defined for arguments: data Use showMethods("with") for currently available ones. 在其他情况下,我可以看到正在调用R函数,但是找不到这些函数的源代码。 > ts.union function (..., dframe = …
550 r  function  r-faq 

14
子集数据帧中的丢包因子级别
我有一个包含的数据框factor。当我使用subset或其他索引功能创建此数据框的子集时,将创建一个新的数据框。但是,factor即使/如果新数据帧中不存在变量,该变量将保留其所有原始级别。 在进行刻面绘图或使用依赖于因子水平的函数时,这会引起问题。 从新数据框中的因素中删除级别的最简洁方法是什么? 这是一个例子: df <- data.frame(letters=letters[1:5], numbers=seq(1:5)) levels(df$letters) ## [1] "a" "b" "c" "d" "e" subdf <- subset(df, numbers <= 3) ## letters numbers ## 1 a 1 ## 2 b 2 ## 3 c 3 # all levels are still there! levels(subdf$letters) ## [1] "a" "b" "c" "d" …
543 r  dataframe  r-factor  r-faq 

11
如何在不重新启动R的情况下卸载软件包
我想卸载软件包而不必重新启动R(主要是因为我尝试不同的方法时重新启动R令人沮丧,但冲突的软件包变得令人沮丧,但是可以想象这可以在程序中使用一个功能,然后使用另一个功能-尽管命名空间对于这种用途,引用可能是一个更好的主意)。 ?library 没有显示任何将卸载软件包的选项。 有一种建议是detach可以卸载包,但都失败了以下内容: detach(vegan) 错误detach(vegan):name参数无效 detach("vegan") 错误detach("vegan"):name参数无效 那么如何卸载包裹?
540 r  package  r-faq 



20
将列表转换为数据框
我有一个嵌套的数据列表。它的长度是132,每个项目都是一个长度为20的列表。是否有一种快速的方法将该结构转换为具有132行和20列数据的数据帧? 以下是一些示例数据: l <- replicate( 132, list(sample(letters, 20)), simplify = FALSE )
513 r  list  dataframe 

11
快速读取非常大的表作为数据框
我有非常大的表(3000万行),我想将其作为R中的数据帧加载。 read.table()它具有许多便利的功能,但是似乎实现中有很多逻辑会使事情变慢。就我而言,我假设我提前知道了列的类型,该表不包含任何列标题或行名,并且没有任何我要担心的病理字符。 我知道使用列表读取表scan()可能很快,例如: datalist <- scan('myfile',sep='\t',list(url='',popularity=0,mintime=0,maxtime=0))) 但是我将其转换为数据帧的一些尝试似乎使上述性能降低了6倍: df <- as.data.frame(scan('myfile',sep='\t',list(url='',popularity=0,mintime=0,maxtime=0)))) 有更好的方法吗?还是完全不同的解决方法?
502 r  import  dataframe  r-faq 

27
技巧以管理R会话中的可用内存
人们使用什么技巧来管理交互式R会话的可用内存?我使用下面的功能(基于Petr Pikal和David Hinds在2004年r-help列表中的发布)列出(和/或排序)最大的对象,并偶尔列出rm()其中的一些对象。但是到目前为止,最有效的解决方案是...在具有足够内存的64位Linux下运行。 人们还想分享其他有趣的技巧吗?请每个帖子一个。 # improved list of objects .ls.objects <- function (pos = 1, pattern, order.by, decreasing=FALSE, head=FALSE, n=5) { napply <- function(names, fn) sapply(names, function(x) fn(get(x, pos = pos))) names <- ls(pos = pos, pattern = pattern) obj.class <- napply(names, function(x) as.character(class(x))[1]) obj.mode <- napply(names, mode) obj.type <- …

7
从命令行运行R脚本
我有一个名为的文件,a.r它的编号chmod为755, sayHello <- function(){ print('hello') } sayHello() 如何通过命令行运行它?
484 r  command-line 

16
创建一个空的data.frame
我正在尝试初始化没有任何行的data.frame。基本上,我想为每一列指定数据类型并为其命名,但因此没有创建任何行。 到目前为止,我能做的最好的事情是: df <- data.frame(Date=as.Date("01/01/2000", format="%m/%d/%Y"), File="", User="", stringsAsFactors=FALSE) df <- df[-1,] 这将创建一个data.frame,其中包含包含我想要的所有数据类型和列名的单行,而且还会创建一个无用的行,然后将其删除。 有一个更好的方法吗?
480 r  dataframe  r-faq 

7
R中的聚类分析:确定最佳聚类数
作为R的新手,我不太确定如何选择最佳数目的聚类来进行k均值分析。在绘制了以下数据的子集之后,多少个簇才合适?如何执行聚类dendro分析? n = 1000 kk = 10 x1 = runif(kk) y1 = runif(kk) z1 = runif(kk) x4 = sample(x1,length(x1)) y4 = sample(y1,length(y1)) randObs <- function() { ix = sample( 1:length(x4), 1 ) iy = sample( 1:length(y4), 1 ) rx = rnorm( 1, x4[ix], runif(1)/8 ) ry = rnorm( 1, y4[ix], …

12
如何找出R中加载了哪个软件包版本?
我正在弄清楚如何使用我的大学集群。它安装了2个R版本。系统范围的R 2.11(Debian 6.0)和R 2.14.2位于非标准位置。 我正在尝试与雪一起使用MPI。我尝试运行的代码如下 library(snow) library(Rmpi) cl <- makeMPIcluster(mpi.universe.size()-1) stopCluster(cl) mpi.quit() 它在R 2.11上没有任何问题。(我使用启动脚本mpirun -H localhost,n1,n2,n3,n4 -n 1 R --slave -f code.R)。现在,当我尝试使用R 2.14.2进行操作时,收到以下消息: Error: This is R 2.11.1, package 'snow' needs >= 2.12.1 In addition: Warning message: 因此,似乎R加载了为R 2.11编译的程序包snow版本。我已将R 2.14下的snow安装到主文件夹中,并在代码中添加了以下几行: .libPaths("/soft/R/lib/R/library") .libPaths("~/R/x86_64-pc-linux-gnu-library/2.11") print(.libPaths()) print(sessionInfo()) print(version) 错误之前的输出确认我确实在运行R 2.14.2,并且我的R包文件夹位于搜索路径的第一位。但是我仍然得到错误。 所以我的问题是如何确定R中加载了哪个版本的软件包?我可以看到 installed.packages已安装的所有软件包,因此也许有一些功能可以列出已加载软件包的类似信息?
405 r  package  version 

2
为什么`[`优于`subset`?
当我需要过滤data.frame,即提取满足某些条件的行时,我更喜欢使用以下subset功能: subset(airquality, Month == 8 & Temp > 90) 而不是[功能: airquality[airquality$Month == 8 & airquality$Temp > 90, ] 我偏爱的主要原因有两个: 我发现代码从左到右读起来更好。即使对R一无所知的人也可以说出subset上面的陈述在做什么。 因为列可以在select表达式中称为变量,所以我可以节省一些击键。在上面的示例中,我只需输入airquality一次subset,但只需输入3次[。 因此,我过着幸福的生活,subset在任何地方都可以使用它,因为它更短且读起来更好,甚至向我的R编码员倡导它的美。但是昨天我的世界崩溃了。在阅读subset文档时,我注意到以下部分: 警告 这是旨在交互使用的便利功能。对于编程,最好使用标准的子集函数,例如[,尤其是参数子集的非标准评估会产生意想不到的后果。 有人可以帮助澄清作者的意思吗? 首先,“ 交互使用 ” 是什么意思?我知道交互式会话是什么,而不是在BATCH模式下运行的脚本,但是我看不出它应该有什么区别。 然后,请您解释一下“ 论点子集的非标准评估 ”,为什么这样做很危险,也许可以举个例子?
400 r  filter  subset  r-faq 


16
更改数据框的列名
我有一个名为“ newprice”的数据框(请参见下文),我想在R中的程序中更改列名。 > newprice Chang. Chang. Chang. 1 100 36 136 2 120 -33 87 3 150 14 164 实际上,这是在做什么: names(newprice)[1]<-paste("premium") names(newprice)[2]<-paste("change") names(newprice)[3]<-paste("newprice") 我没有将其循环,因为您希望每个列名都不同。 当我将程序粘贴到R控制台时,这是给我的输出: > names(newprice)[1]<-paste(“premium”) Error: unexpected input in "names(newprice)[1]<-paste(“" > names(newprice)[2]<-paste(“change”) Error: unexpected input in "names(newprice)[2]<-paste(“" > names(newprice)[3]<-paste(“newpremium”) Error: unexpected input in "names(newprice)[3]<-paste(“" 我同样尝试使用c()功能-例如c("premium"),而不是paste()功能,但无济于事。 有人可以帮我解决这个问题吗?
399 r  dataframe  rename 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.