r - 在应用族函数中使用反引号和运算符

标签 r dataframe operators apply

我在最近的一个回答中看到了一个带有内置作业的 apply family 函数,但无法对其进行概括。

lst <- list(a=1, b=2:3)
lst
$a
[1] 1

$b
[1] 2 3

由于长度不等,这还不能制成 data.frame。但是通过将最大长度强制到列表中,它可以工作:
data.frame(lapply(lst, `length<-`, max(lengths(lst))))
   a b
1  1 2
2 NA 3

那个有效。但我从未在应用函数中使用过箭头赋值。我试图通过概括如下来理解它:
lapply(lst, function(x) length(x) <- max(lengths(lst)))
$a
[1] 2

$b
[1] 2

那不是正确的输出。也不是
lapply(lst, function(x) length(x) <- max(lengths(x)))
 Error in lengths(x) : 'x' must be a list 

这将是一种很好理解的有用技术。有没有办法以匿名函数形式表达赋值?

最佳答案

通过使用匿名函数,我们只返回该函数的值,而不是“x”的值。我们必须指定 return(x)或者干脆 x .

lapply(lst, function(x) {
                  length(x) <- max(lengths(lst))
                  x})
#$a
#[1]  1 NA

#$b
#[1] 2 3

关于r - 在应用族函数中使用反引号和运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30551449/

相关文章:

r - 我可以指定下载用于构建 R 包的源代码的去向吗

r - 如何使用 ggplot2 按月、季度或年分组

dataframe - toDF 问题,值 toDF 不是 org.apache.spark.rdd.RDD 的成员

python - 有包含列表的 Pandas 列,如何将唯一的列表元素转换为列?

Java 的 >> 与 >>> 运算符?

javascript - 是什么 !! JavaScript 中的运算符?

c++ - 为什么 VB.NET 和 C++ 对相同的表达式给出不同的结果?

r - 如何更改 DT/Shiny 中 ColumnVisibility 按钮的颜色

r - 了解 lm 和环境

python - 如何根据输入年份生成包含一年中各天的数据框?