Big*_*LBL 4 syntax r lapply sapply
在编程语言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; X2 = 14 X1 = 7; X2 = 8; X3 = 9
@Henrik两个答案的答案是一样的,但问题是不同的.这个被标记为重复的问题(使用'['方括号作为R中lapply的函数)预先知道[对我们R新手来说这是一个不明显的函数.
[是一个功能.在下面的示例中,它使用两个参数.
L <- list(a = 1:4, b = 1:3)
sapply(L, `[`, 2)
## a b
## 2 2
Run Code Online (Sandbox Code Playgroud)
以上sapply是其中任何一个:
sapply(L, function(x) `[`(x, 2))
sapply(L, function(x) x[2])
Run Code Online (Sandbox Code Playgroud)
它是R中的原始函数,其R源是以下,即它支持底层C代码.
`[`
## .Primitive("[")
Run Code Online (Sandbox Code Playgroud)
可以为它编写S3方法.例如,这些方法可用于香草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
Run Code Online (Sandbox Code Playgroud)
例如,尝试以下操作以查看这些方法的R源代码:
`[.data.frame`
`[.Date`
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
123 次 |
| 最近记录: |