我在最近的回答中看到了一个内置赋值的应用家庭功能,无法对其进行概括。
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
这将是一个很好理解的有用技巧。有没有办法以匿名函数形式表达赋值?
答案 0 :(得分:2)
通过使用匿名函数,我们只返回该函数的值,而不是'x'的值。我们必须指定return(x)
或简称x
。
lapply(lst, function(x) {
length(x) <- max(lengths(lst))
x})
#$a
#[1] 1 NA
#$b
#[1] 2 3