相关疑难解决方法(0)

如何查看函数的源代码?

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

> 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万
查看次数

`level <-`(这是什么巫术?

在回答另一个问题时,@ Mayk发布了以下解决方案:https://stackoverflow.com/a/10432263/636656

dat <- structure(list(product = c(11L, 11L, 9L, 9L, 6L, 1L, 11L, 5L, 
                                  7L, 11L, 5L, 11L, 4L, 3L, 10L, 7L, 10L, 5L, 9L, 8L)), .Names = "product", row.names = c(NA, -20L), class = "data.frame")

`levels<-`(
  factor(dat$product),
  list(Tylenol=1:3, Advil=4:6, Bayer=7:9, Generic=10:12)
  )
Run Code Online (Sandbox Code Playgroud)

哪个产生输出:

 [1] Generic Generic Bayer   Bayer   Advil   Tylenol Generic Advil   Bayer   Generic Advil   Generic Advil   Tylenol
[15] Generic Bayer   Generic Advil   Bayer   Bayer  
Run Code Online (Sandbox Code Playgroud)

这只是矢量的打印输出,所以要存储它你可以做得更加困惑:

res <- `levels<-`(
  factor(dat$product),
  list(Tylenol=1:3, Advil=4:6, Bayer=7:9, Generic=10:12)
  )
Run Code Online (Sandbox Code Playgroud)

显然这是对level函数的某种调用,但我不知道这里做了什么.这种巫术的术语是什么,我如何在这个领域增加我的魔法能力?

types r levels

110
推荐指数
4
解决办法
6188
查看次数

作为应用函数的参数传递的引用方括号的确切含义是什么?

在编程语言R中,恰恰是什么意思

'['
Run Code Online (Sandbox Code Playgroud)

它在以下代码部分中充当sapply()和lapply()的参数:

dd <- data.frame(
    A = c(1L, 2L, 3L), 
    B = c(4L, 5L, 6L), 
    C = c("X1=7;X2=8;X3=9",
          "X1=13;X2=14",
          "X1=5;X2=1;X3=8")
)
namev <- function(x) {
    a <- strsplit(x,"=")
    setNames(sapply(a,'[',2), sapply(a,'[',1))
}

vv <- lapply(strsplit(as.character(dd$C),";"), namev)

nm <- unique(unlist(sapply(vv, names)))

#extract data from all rows for every column
nv <- do.call(rbind, lapply(vv, '[', nm))
Run Code Online (Sandbox Code Playgroud)

dd $ C [1] X1 = 7; X2 = 8; X3 = 9 X1 ;; X1 = 13; X2 = 14
级:X1 ;; X1 = 13; …

syntax r lapply sapply

4
推荐指数
1
解决办法
123
查看次数

如何将列表转换为查找表

我有一个列表输出,看起来像这个片段:

[[1]]
[1] 109

[[2]]
integer(0)

[[3]]
[1] 80
Run Code Online (Sandbox Code Playgroud)

有没有办法将其转换为这种格式?

C1   C2
1    109
2    0 (or NA)
3    80
Run Code Online (Sandbox Code Playgroud)

不知道从哪里开始...如果我取消它,我注意到我失去了整数(0)位置,这对我来说很重要.

r list lookup-tables

1
推荐指数
1
解决办法
61
查看次数

标签 统计

r ×4

function ×1

lapply ×1

levels ×1

list ×1

lookup-tables ×1

r-faq ×1

sapply ×1

syntax ×1

types ×1