Questions tagged «r-faq»

创建r-faq标签是为了将有限数量的问题分组,以讨论定期出现在R标签上的问题。它不是R for SO的官方常见问题解答,但应作为有关常见问题的有趣信息来源。

6
R中的“ S3方法”是什么意思?
由于我对R相当陌生,所以我不知道S3方法和对象是什么。我发现有S3和S4对象系统,有些建议尽可能使用S3而不是S4(请参阅http://google-styleguide.googlecode.com/svn/trunk/google-r-style上的 Google R样式指南。 html)*。但是,我不知道S3方法/对象的确切定义。 更新:从2019年开始,Google的R样式指南超链接现在位于此处。
124 r  oop  r-faq  r-s3  r-s4 

14
计算每个组中的行数
我有一个数据框,我想计算每个组中的行数。我通常使用该aggregate函数对数据求和,如下所示: df2 <- aggregate(x ~ Year + Month, data = df1, sum) 现在,我想对观察值进行计数,但似乎找不到的正确论点FUN。凭直觉,我认为应该是这样的: df2 <- aggregate(x ~ Year + Month, data = df1, count) 但是,没有这种运气。 有任何想法吗? 一些玩具数据: set.seed(2) df1 <- data.frame(x = 1:20, Year = sample(2012:2014, 20, replace = TRUE), Month = sample(month.abb[1:3], 20, replace = TRUE))
121 r  dataframe  aggregate  r-faq 

13
R中调试的一般建议
使用我编写的R函数时出现错误: Warning messages: 1: glm.fit: algorithm did not converge 2: glm.fit: algorithm did not converge 我做了什么: 逐步执行功能 添加打印以找出错误发生在哪行提示两个不应使用的功能glm.fit。他们是window()和save()。 我的一般方法包括添加print和stop命令,以及逐行浏览功能,直到找到异常为止。 但是,我不清楚使用那些错误源于代码的技术。我什至不确定代码中的哪个函数依赖于glm.fit。我该如何诊断该问题?
120 r  debugging  r-faq 

8
使用$和字符值动态选择数据框列
我有一个具有不同列名的向量,并且我希望能够遍历每个列名,以便从data.frame中提取该列。例如,考虑数据集mtcars和一些存储在字符向量中的变量名cols。当我尝试mtcars使用的动态子集选择变量时cols,这些工作会进一步 cols <- c("mpg", "cyl", "am") col <- cols[1] col # [1] "mpg" mtcars$col # NULL mtcars$cols[1] # NULL 我怎样才能得到这些返回相同的值 mtcars$mpg 此外,我该如何遍历所有列cols以某种形式获取值。 for(x in seq_along(cols)) { value <- mtcars[ order(mtcars$cols[x]), ] }
120 r  dataframe  r-faq 

5
将data.frame列名传递给函数
我正在尝试编写一个函数来接受data.frame(x)和column来自它的a。该函数在x上执行一些计算,然后返回另一个data.frame。我坚持将最佳实践方法传递给函数的列名。 两个最小的例子fun1和fun2下面产生所需的结果,能够执行操作x$column,使用max(),例如,但是,两者都依靠(至少对我而言)看起来不雅 致电substitute()并可能eval() 需要将列名作为字符向量传递。 fun1 <- function(x, column){ do.call("max", list(substitute(x[a], list(a = column)))) } fun2 <- function(x, column){ max(eval((substitute(x[a], list(a = column))))) } df <- data.frame(B = rnorm(10)) fun1(df, "B") fun2(df, "B") 例如,我希望能够将函数调用fun(df, B)为。我考虑过但尚未尝试过的其他选择: column作为列号的整数传递。我认为这样可以避免substitute()。理想情况下,函数可以接受任何一个。 with(x, get(column)),但即使有效,我认为这仍然需要 substitute 利用formula()和match.call(),我都没有丰富的经验。 子问题:do.call()比起首选eval()?
119 r  dataframe  r-faq 


9
为什么R的ifelse语句不能返回向量?
我发现R的ifelse语句有时很方便。例如: ifelse(TRUE,1,2) # [1] 1 ifelse(FALSE,1,2) # [1] 2 但是,我对以下行为感到困惑。 ifelse(TRUE,c(1,2),c(3,4)) # [1] 1 ifelse(FALSE,c(1,2),c(3,4)) # [1] 3 这是我的薪水之上的设计选择吗?
118 r  if-statement  r-faq 

2
将UNIX时代转换为Date对象
我正在绘制并在均匀分布的时间序列上执行计算。当前,时间戳记存储为整数,表示自UNIX纪元以来的秒数(例如1352068320),但是Date对象似乎更适合绘制。我如何进行转换? 我读过?Date,?as.Date和??epoch,但似乎已经错过了的信息。
118 r  time  r-faq 

11
当一些数字包含逗号作为千位分隔符时,如何读取数据?
我有一个csv文件,其中一些数值表示为字符串,并用逗号作为千位分隔符,例如"1,513"代替1513。将数据读入R的最简单方法是什么? 我可以使用read.csv(..., colClasses="character"),但是在将这些列转换为数值之前,我必须从相关元素中去除逗号,而且我找不到一种整洁的方式来做到这一点。
117 r  csv  r-faq 

7
安排R脚本
我编写了一个R脚本,该脚本从数据库中提取一些数据,对该数据库执行一些操作,然后将输出发布到新数据库中。 我希望该脚本每天在特定时间运行,但是我找不到有效地执行此操作的任何方法。 谁能推荐我可以用来解决这个问题的资源?我正在Windows计算机上运行此脚本。
113 r  windows  schedule  r-faq 

7
查找所有重复的行,包括“下标较小的元素”
R duplicated返回一个向量,该向量表示向量或数据帧的每个元素是否都是下标较小的元素的重复。因此,如果5行数据帧的第3、4和5行相同,请duplicated给我向量 FALSE, FALSE, FALSE, TRUE, TRUE 但是在这种情况下,我实际上想要 FALSE, FALSE, TRUE, TRUE, TRUE 也就是说,我想知道行是否也被下标较大的行重复。
111 r  duplicates  r-faq 

3
在R中控制打印输出中的小数位数
R中有一个选项可以控制数字显示。例如: options(digits=10) 应该以10位数字给出计算结果,直到R会话结束。在R的帮助文件中,digits参数的定义如下: digits:控制在打印数字值时要打印的位数。这只是一个建议。有效值为1 ... 22,默认值为7 因此,它说这只是一个建议。如果我希望始终显示10位数字,而不是多多少少怎么办? 我的第二个问题是,如果我想显示22位以上的数字,例如100位数字等更精确的计算,该怎么办?基数R是否有可能,或者我是否需要其他包装/功能? 编辑:感谢jmoy的建议,我尝试了sprintf("%.100f",pi),它给了 [1] "3.1415926535897931159979634685441851615905761718750000000000000000000000000000000000000000000000000000" 其中有48位小数。这是R可以处理的最大限制吗?

5
<我的代码>中的错误:“关闭”类型的对象不可子集化
我终于能够制定出我的抓取代码。它似乎运行良好,然后突然再次运行时,出现以下错误消息: Error in url[i] = paste("http://en.wikipedia.org/wiki/", gsub(" ", "_", : object of type 'closure' is not subsettable 我不确定为什么在代码中未进行任何更改。 请指教。 library(XML) library(plyr) names &lt;- c("George Clooney", "Kevin Costner", "George Bush", "Amar Shanghavi") for(i in 1:length(names)) { url[i] = paste('http://en.wikipedia.org/wiki/', gsub(" ","_", names[i]) , sep="") # some parsing code }
110 r  r-faq 

6
将一列中以逗号分隔的字符串拆分为单独的行
我有一个数据框,如下所示: data.frame(director = c("Aaron Blaise,Bob Walker", "Akira Kurosawa", "Alan J. Pakula", "Alan Parker", "Alejandro Amenabar", "Alejandro Gonzalez Inarritu", "Alejandro Gonzalez Inarritu,Benicio Del Toro", "Alejandro González Iñárritu", "Alex Proyas", "Alexander Hall", "Alfonso Cuaron", "Alfred Hitchcock", "Anatole Litvak", "Andrew Adamson,Marilyn Fox", "Andrew Dominik", "Andrew Stanton", "Andrew Stanton,Lee Unkrich", "Angelina Jolie,John Stevenson", "Anne …
109 r  string  split  r-faq 

10
多行评论解决方法?
我(有点)已经知道这个问题的答案。但是我认为这是R用户列表中经常被问到的问题,应该有一个可靠的好答案。 据我所知,R中没有多行注释功能。那么,有人有什么好的解决方法吗? 尽管R中很多工作通常涉及交互式会话(这使人们对多行注释的需求产生怀疑),但有时我不得不将脚本发送给同事和同学,其中很多涉及不平凡的代码块。对于来自其他语言的人来说,这是一个很自然的问题。 过去我使用引号。由于字符串支持换行符,因此使用 " Here's my multiline comment. " a &lt;- 10 rocknroll.lm &lt;- lm(blah blah blah) ... 工作良好。有谁有更好的解决方案?
108 r  comments  r-faq 

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.