我想查看一个函数的源代码,看看它是如何工作的.我知道我可以通过在提示符下键入其名称来打印函数:
> t
function (x)
UseMethod("t")
<bytecode: 0x2332948>
<environment: namespace:base>
Run Code Online (Sandbox Code Playgroud)
在这种情况下,是什么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.
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中逐行构建一个数据帧.我已经做了一些搜索,我想出的是建议创建一个空列表,保留一个列表索引标量,然后每次添加到列表单行数据帧并将列表索引提前一个.最后,do.call(rbind,)在名单上.
虽然这有效,但看起来非常麻烦.是否有更简单的方法来实现相同的目标?
显然,我指的是我不能使用某些apply函数并明确需要逐行创建数据帧的情况.至少,有没有办法push进入列表的末尾而不是显式跟踪最后使用的索引?
我有一个包含以下数据的数据框:
>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参数需要是一个类似时间序列的对象.
有没有什么方法可以将我的数组转换为时间序列对象,因为一个句点中的每个日期可能都没有数据(仅适用于我指定的数据)?
我有以下数据帧(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-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.packages和packageStatus确定哪些包仅存在于R-forge上的信息的某种组合,但我想问一下在构建自定义解决方案之前是否有更简单的方法.
为什么迭代一个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) 在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)
要么 …
很可能会暴露我是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中,我如何制作一个列表,然后用向量元素填充它?
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读取包含撇号的.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的新手,非常感谢任何帮助.
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