R 简单上下文中的lapply、sapply和apply函数

R 简单上下文中的lapply、sapply和apply函数,r,R,在R中运行此代码: pr <- function(x) { x } lapply(c("a" , "b") , pr) sapply(c("a" , "b") , pr) apply(c("a" , "b") , pr) pr >lappy(c(“a”、“b”),pr) [[1]] [1] “a” [[2]] [1] “b” > >萨普利(c(“a”、“b”)、pr) a b “a”“b” > >适用(c(“a”、“b”)、pr) match.fun(fun)中出错:缺少参

在R中运行此代码:

pr <- function(x) {
  x
}

lapply(c("a" , "b") , pr)

sapply(c("a" , "b") , pr)

apply(c("a" , "b") , pr)
pr
>lappy(c(“a”、“b”),pr)
[[1]]
[1] “a”
[[2]]
[1] “b”
> 
>萨普利(c(“a”、“b”)、pr)
a b
“a”“b”
> 
>适用(c(“a”、“b”)、pr)
match.fun(fun)中出错:缺少参数“fun”,没有默认值
以下是我对上述上下文中
lappy
sapply
apply
返回值的理解:

lappy
返回一个列表,这是否由
[[1]]
表示

sapply
返回一个向量,但是为什么向量维度
[1]
没有返回作为响应


apply
返回一个错误,为什么会发生这种情况?
lapply/sapply
循环通过每个元素,即在这种情况下,
向量的每个元素(
c('a','b')
)。如果它是data.frame,则列将是循环的,
矩阵
是带维度的
向量
,因此,每个元素将循环并应用函数。返回的输出是
lappy
sapply
列表,这里是
向量
,但它取决于参数
simplify
。默认情况下,它是
simplify=TRUE
,因此如果输出元素的长度相同,它将返回一个
向量

使用
apply
,我们需要一个
MARGIN
参数。
边距
用于
数据框
矩阵
。假设,如果我们将
向量
转换为
矩阵
,那么使用
边距
就可以了

apply(t(c("a" , "b")) , 2, pr)
如果是单列矩阵,则使用
MARGIN=1

apply(matrix(c('a', 'b')), 1, pr)

它可以根据输出元素的长度返回
列表
向量
等。在这里,它只是返回值。因此,它是一个
向量

lapply/sapply
循环通过每个元素,即在这种情况下,
向量的每个元素
c('a','b')
)。如果它是data.frame,则列将是循环的,
矩阵
是带维度的
向量
,因此,每个元素将循环并应用函数。返回的输出是
lappy
sapply
列表,这里是
向量
,但它取决于参数
simplify
。默认情况下,它是
simplify=TRUE
,因此如果输出元素的长度相同,它将返回一个
向量

使用
apply
,我们需要一个
MARGIN
参数。
边距
用于
数据框
矩阵
。假设,如果我们将
向量
转换为
矩阵
,那么使用
边距
就可以了

apply(t(c("a" , "b")) , 2, pr)
如果是单列矩阵,则使用
MARGIN=1

apply(matrix(c('a', 'b')), 1, pr)


它可以根据输出元素的长度返回
列表
向量
等。在这里,它只是返回值。因此,它是一个
向量

apply
需要一个
MARGIN
参数。在这种情况下,它是2。顺便说一句,它在这里甚至不起作用,因为它是用于
data.frame
matrix
的,即
apply(t(c(“a”,“b”)),2,pr)
我强烈建议阅读Hadley Wickham的“Advanced R”(函数章节):。另外,请看一下R中函数的标准文档(以及示例):-)我可以建议您阅读这些函数的文档吗?我删除了对Rstudio的任何提及,因为这个问题与IDE无关。这仅仅是一个关于R的问题。(R和Rstudio是独立的软件)。
apply
需要一个
MARGIN
参数。在这种情况下,它是2。顺便说一句,它在这里甚至不起作用,因为它是用于
data.frame
matrix
的,即
apply(t(c(“a”,“b”)),2,pr)
我强烈建议阅读Hadley Wickham的“Advanced R”(函数章节):。另外,请看一下R中函数的标准文档(以及示例):-)我可以建议您阅读这些函数的文档吗?我删除了对Rstudio的任何提及,因为这个问题与IDE无关。这仅仅是一个关于R的问题。(R和Rstudio是独立的软件)。sapply返回一个向量,但为什么向量维度[1]没有返回作为回应,这是Rstudio的一些怪癖吗?@blue sky如前所述,
sapply
的默认值是
simplify=TRUE
谢谢,但会考虑使用sapply(c(“a”,“b”),pr,simplify=FALSE)应返回[1]“a”和“b”。[[1]]的意义是什么?@blue sky正如您所指出的,它返回一个
列表
,因为您不想将其简化为向量。
[[1]]
的意义在于,它将第一个列表元素子集为“a”@blue sky阅读
上的文档?[
它包含非常有用的信息,有助于澄清列表和向量之间的差异。也可能。sapply返回向量,但为什么向量维度是[1]没有返回响应,这是rstudio的一些怪癖吗?@blue sky如前所述,
sapply
的默认值是
simplify=TRUE
谢谢,但会认为使用sapply(c(“a”,“b”),pr,simplify=FALSE)应该返回[1]“a”“b”。[[1]的意义是什么?正如您所指出的,@blue sky正在返回一个
列表
,因为您不想将其简化为一个向量。
[[1]]
的意义在于,它将第一个列表元素子集,以给出“a”@blue sky阅读
上的文档?[
它包含了非常有用的信息,有助于澄清列表和向量之间的差异。也许还有。