gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 08:38:26 25 4
gpt4 key购买 nike

在编程语言 R 中,准确地说,

'['

在以下代码部分中用作 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))

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

@Henrik 两个答案的答案相同,但问题不同。这个被标记为重复的问题( Using '[' square bracket as a function for lapply in R )预设了这样一个知识:[ 是一个对于我们 R 新手来说不是不言自明的函数。

最佳答案

[ 是一个函数。在下面的示例中,它与两个参数一起使用。

L <- list(a = 1:4, b = 1:3)

sapply(L, `[`, 2)
## a b
## 2 2

上面的sapply与以下任意一个相同:

sapply(L, function(x) `[`(x, 2))

sapply(L, function(x) x[2])

它是 R 中的一个原始函数,其 R 源如下,即它转入底层 C 代码。

`[`
## .Primitive("[")

可以为其编写S3方法。例如,这些方法在 vanilla R 中可用。

> methods("[")
[1] [,nonStructure-method [.acf* [.AsIs
[4] [.bibentry* [.data.frame [.Date
[7] [.difftime [.Dlist [.factor
[10] [.formula* [.getAnywhere* [.hexmode
[13] [.listof [.noquote [.numeric_version
[16] [.octmode [.pdf_doc* [.person*
[19] [.POSIXct [.POSIXlt [.raster*
[22] [.roman* [.SavedPlots* [.simple.list
[25] [.table [.terms* [.ts*
[28] [.tskernel* [.warnings
see '?methods' for accessing help and source code

例如,尝试以下操作来查看这些方法的 R 源代码:

`[.data.frame`

`[.Date`

关于r - 作为参数传递以应用函数的带引号的方括号的确切含义是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49737093/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com