小编Jos*_*ich的帖子

如何查看函数的源代码?

我想查看一个函数的源代码,看看它是如何工作的.我知道我可以通过在提示符下键入其名称来打印函数:

> t
function (x) 
UseMethod("t")
<bytecode: 0x2332948>
<environment: namespace:base>
Run Code Online (Sandbox Code Playgroud)

在这种情况下,是什么UseMethod("t")意思?我如何找到实际使用的源代码,例如:t(1:10)

有没有当我看到之间的差异UseMethod,当我看到standardGenericshowMethods,与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.
Run Code Online (Sandbox Code Playgroud)

在其他情况下,我可以看到正在调用R函数,但我找不到这些函数的源代码.

> ts.union
function (..., dframe = FALSE) 
.cbind.ts(list(...), .makeNamesTs(...), dframe = dframe, union = TRUE)
<bytecode: 0x36fbf88>
<environment: namespace:stats>
> .cbindts
Error: object '.cbindts' …
Run Code Online (Sandbox Code Playgroud)

r function r-faq

518
推荐指数
10
解决办法
26万
查看次数

逐行创建R数据帧

我想在R中逐行构建一个数据帧.我已经做了一些搜索,我想出的是建议创建一个空列表,保留一个列表索引标量,然后每次添加到列表单行数据帧并将列表索引提前一个.最后,do.call(rbind,)在名单上.

虽然这有效,但看起来非常麻烦.是否有更简单的方法来实现相同的目标?

显然,我指的是我不能使用某些apply函数并明确需要逐行创建数据帧的情况.至少,有没有办法push进入列表的末尾而不是显式跟踪最后使用的索引?

r list dataframe

103
推荐指数
4
解决办法
12万
查看次数

将带有日期列的数据框转换为时间序列

我有一个包含以下数据的数据框:

>PRICE
         DATE  CLOSE
1    20070103 54.700
2    20070104 54.770
3    20070105 55.120
4    20070108 54.870
5    20070109 54.860
6    20070110 54.270
7    20070111 54.770
8    20070112 55.360
9    20070115 55.760
...
Run Code Online (Sandbox Code Playgroud)

如您所见,我的DATE列表示日期(yyyyMMdd),而我的CLOSE列表示价格.

我现在必须从PerformanceAnalytics包中计算出CalmarRatio.

我是R的新手,所以我无法理解所有内容,但从我用谷歌搜索到的那一刻,我看到该函数的R参数需要是一个类似时间序列的对象.

有没有什么方法可以将我的数组转换为时间序列对象,因为一个句点中的每个日期可能都没有数据(仅适用于我指定的数据)?

r xts

56
推荐指数
2
解决办法
8万
查看次数

将列添加到R中的数据框

我有以下数据帧(df)

 start     end
1    14379   32094
2   151884  174367
3   438422  449382
4   618123  621256
5   698271  714321
6   973394  975857
7   980508  982372
8   994539  994661
9  1055151 1058824
.   .       .
.   .       .
.   .       .
Run Code Online (Sandbox Code Playgroud)

带有数值(vec)的长向量.

我想在每一行中添加另一列,其中包含相应位置的值的平均值vec.例如,第一行将具有mean(vec[14379:32094]).我试过玩transform但却无法完成这个简单的任务.

r dataframe

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

自动更新从R-forge安装的软件包

我最近从R-2.11.1安装了R-2.12.0,我通过以下方式更新了所有CRAN包:

update.packages(checkBuilt=TRUE, ask=FALSE)
Run Code Online (Sandbox Code Playgroud)

现在我想更新我从R-forge安装的所有软件包,但前提是它们在CRAN上不可用.换句话说,我不能简单地运行:

update.packages(checkBuilt=TRUE, ask=FALSE, repos="http://r-forge.r-project.org")
Run Code Online (Sandbox Code Playgroud)

因为它会在survivalR-2.12.0附带的版本上安装R-forge 版本的软件包.

我可以使用来自old.packagespackageStatus确定哪些包仅存在于R-forge上的信息的某种组合,但我想问一下在构建自定义解决方案之前是否有更简单的方法.

r r-forge

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

循环使用datetime对象会生成数字迭代器

为什么迭代一个Date或一个POSIXct对象导致numeric?例如:

test = as.Date("2009-01-01")
print( class( test ) )
# [1] "Date"
for ( day in test )
{
    print( class( day ) )
}
# [1] "numeric"
Run Code Online (Sandbox Code Playgroud)

同样的事情发生在POSIXct:

test = as.POSIXct("2009-01-01")
print( class( test ) )
# [1] "POSIXct" "POSIXt"
for ( day in test )
{
    print( class( day ) )
}
# [1] "numeric"
Run Code Online (Sandbox Code Playgroud)

attributes for-loop r date

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

更改POSIXct对象中的时区

在R.中使用dateTimes和timezone可能会很棘手.这是我的问题:我想更改POSIXct对象的时区

R) data <- data.frame(x=c(1,2),dateTime=as.POSIXct(c("2010-03-11 03:30:00.432","2010-03-15 03:30:00.432"),format="%Y-%m-%d %H:%M:%S",tz="America/Montreal"))
R) data
  x            dateTime
1 1 2010-03-11 03:30:00
2 2 2010-03-15 03:30:00
R) str(data)
'data.frame':   2 obs. of  2 variables:
 $ x       : num  1 2
 $ dateTime: POSIXct, format: "2010-03-11 03:30:00" "2010-03-15 03:30:00"
Run Code Online (Sandbox Code Playgroud)

但如果我想改变时区,我唯一发现的是:

R) data$dateTime2 = format(data$dateTime,tz="Europe/Paris")
R) str(data)
'data.frame':   2 obs. of  3 variables:
 $ x        : num  1 2
 $ dateTime : POSIXct, format: "2010-03-11 03:30:00" "2010-03-15 03:30:00"
 $ dateTime2: chr  "2010-03-11 09:30:00" "2010-03-15 08:30:00"
Run Code Online (Sandbox Code Playgroud)

要么 …

datetime r

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

R向量/数据帧中的基本滞后

很可能会暴露我是R的新手,但在SPSS中,运行滞后非常容易.显然这是用户错误,但我缺少什么?

x <- sample(c(1:9), 10, replace = T)
y <- lag(x, 1)
ds <- cbind(x, y)
ds
Run Code Online (Sandbox Code Playgroud)

结果是:

      x y
 [1,] 4 4
 [2,] 6 6
 [3,] 3 3
 [4,] 4 4
 [5,] 3 3
 [6,] 5 5
 [7,] 8 8
 [8,] 9 9
 [9,] 3 3
[10,] 7 7
Run Code Online (Sandbox Code Playgroud)

我想我会看到:

     x y
 [1,] 4 
 [2,] 6 4
 [3,] 3 6
 [4,] 4 3
 [5,] 3 4
 [6,] 5 3
 [7,] 8 5
 [8,] 9 8
 [9,] 3 9
[10,] …
Run Code Online (Sandbox Code Playgroud)

r time-series zoo xts

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

如何在R中制作整数向量列表

基本问题:在R中,我如何制作一个列表,然后用向量元素填充它?

l <- list() 
l[1] <- c(1,2,3) 
Run Code Online (Sandbox Code Playgroud)

这给出了错误"要替换的项目数不是替换长度的倍数",因此R试图解包向量.到目前为止,我发现工作的唯一方法是在制作列表时添加向量.

l <- list(c(1,2,3), c(4,5,6))
Run Code Online (Sandbox Code Playgroud)

r

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

如何将包含撇号的.csv文件读入R?

我很难让R读取包含撇号的.txt或.csv文件.

我的一些专栏包含描述性文字,例如"出于客户的需求"或"警长的副手".我的文件在Excel中正确打开(即,所有数据都显示在正确的单元格中;有3列和大约8000行,并且没有丢失的数据).但当我要求R读取文件时,会发生以下情况:

data <-read.table("datafile.csv", sep=",", header=TRUE)
  Error in scan(file, what, nmax, sep, dec, quote, skip, nlines, na.strings,  : 
  line 520 did not have 3 elements
Run Code Online (Sandbox Code Playgroud)

(第520行是包含撇号的第一行.)

如果我进入.txt或.csv文件并手动删除所有撇号,则R会正确读取文件.但是,如果可以的话,我宁愿保留撇号.

我是R的新手,非常感谢任何帮助.

csv r punctuation

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

标签 统计

r ×10

dataframe ×2

xts ×2

attributes ×1

csv ×1

date ×1

datetime ×1

for-loop ×1

function ×1

list ×1

punctuation ×1

r-faq ×1

r-forge ×1

time-series ×1

zoo ×1