理解为什么在 R returns 更长的向量中应用
Understanding why sapply in R returns vector of longer length
我正在分析 R
中的各个代码行,以便更好地理解大型函数。虽然我知道 sapply
apples 一个向量上的函数,但我无法理解它在特定实例中的作用。不幸的是,我在其他地方找不到关于这个确切问题的明确解释。
如果您使用以下代码示例模拟数据,变量 Y
是一个包含 2000 个值的向量,calc_sizes
是 Y 中唯一值的数量(87 个唯一值)。当 sapply
应用于 likelihoods
时,它是在 likelihoods[calc_sizes]<-sapply(calc_sizes, nb.likelihood)
的上下文中完成的。这 return 是一个包含 688 个值的向量
sapply
在这里做什么,how/why 是 return 688 而不是 87 的向量吗?
需要说明的是,代码运行正常 - 没有技术问题。我宁愿 理解 和 学习 而不是盲目地编写最终有效的代码(这样我就不必打扰这个论坛了经常)。
您应该能够逐字复制和粘贴代码以获得提到的结果。感谢您的任何见解!
#################################################################
#Functions that are needed to generate and apply to sample data
#################################################################
bp <- function(gens=20, init.size=1, offspring, ...){
Z <- list() #initiate the list
Z[[1]] <- init.size #set the first position of the list as the number of index cases
i <- 1
while(sum(Z[[i]]) > 0 && i <= gens) {
Z[[i+1]] <- offspring(sum(Z[[i]]), ...)
i <- i+1
}
return(Z)
}
nb.likelihood<-function(x){
lgamma(k*x+(x-1))-(lgamma(k*x)+lgamma(x+1))+(x-1)*log(r0/k)-(k*x+(x-1))*log(1+r0/k)
}
####################
#Generate sample data
####################
set.seed(123)
Z<-replicate(n=2000,bp(offspring=rnbinom,mu=0.9,size=0.25))
Y<-unlist(lapply(Z,function(x) sum(unlist(x))))
#Generate variables in question
calc_sizes<-unique(c(1,Y))
likelihoods<-c()
#########################
#line of code in question
#########################
likelihoods[calc_sizes]<-sapply(calc_sizes, nb.likelihood)
当您执行 likelihoods[calc_sizes] <- sapply(calc_sizes, nb.likelihood)
时,您将 sapply(calc_sizes, nb.likelihood)
的结果保存到位置 calc_sizes
上的向量 likelihoods
中。
由于 calc_sizes
值从 1 到 688,R 将 likelihoods
转换为 688 长度向量。但是如果你 运行 table(is.na(calc_sizes))
你会看到只有 87 个位置没有丢失。
让我给你看一个更简单的例子,希望能让你更容易理解。
假设 v
是一个向量,其值从 1
到 10
,并且 idx
是 v
的索引的子集,其中函数func
会根据idx
对v
进行一些替换操作。
v <- 1:10
idx <- 2:6
func <- function(k) -v[k]**2
到目前为止,v
中的内容如下:
> v
[1] 1 2 3 4 5 6 7 8 9 10
然后,使用sapply(idx, func)
就是对idx
中的每个元素应用函数func
,即c(-v[2]^2,-v[3]^2,-v[4]^2,-v[5]^2,-v[6]^2)
将从sapply(idx, func)
中输出。
最后,输出将被赋值给v[idx]
作为原始值的替换
v[idx] <- sapply(idx, func)
那你就可以看到
> v
[1] 1 -4 -9 -16 -25 -36 7 8 9 10
具体回答 688 的原因是您通过无序索引将值从 calc_size
的值分配给空向量 likelihoods
。具体来说,calc_sizes
包含 87 个整数值。注意最小项是 1,最大项是 688。
calc_sizes
[1] 1 40 2 3 180 4 19 21 10 49 6 18 5 11 81 23 186 189 8
[20] 41 27 20 7 12 68 9 25 16 131 15 51 26 22 17 648 24 30 32
[39] 28 36 53 96 47 14 548 109 38 31 99 106 34 39 607 100 233 42 66
[58] 129 33 170 102 70 13 46 63 79 97 447 460 688 346 130 44 69 620 113
[77] 92 256 153 78 462 325 61 64 54 76 86
但是,您的预期 sapply
还包含 87:
sapply(calc_sizes, nb.likelihood)
[1] -1.098612 -11.788381 -2.602690 -3.413620 -30.541489 -4.001407
[7] -8.187640 -8.575276 -6.146104 -13.154588 -4.881330 -7.987619
[13] -4.475865 -6.410490 -17.680645 -8.948901 -31.297439 -31.674821
[19] -5.565697 -11.943435 -9.663029 -8.383385 -5.240275 -6.661805
[25] -15.886160 -5.865802 -9.310881 -7.572668 -24.292698 -7.356445
[31] -13.450466 -9.488087 -8.763676 -7.782825 -87.586858 -9.131222
[37] -10.175841 -10.509013 -9.835872 -11.158148 -13.744013 -19.702968
[43] -12.856183 -7.133302 -75.557026 -21.425116 -11.475373 -10.343221
[49] -20.102594 -21.029806 -10.836219 -11.632377 -82.659672 -20.235490
[55] -37.171587 -12.097586 -15.605646 -24.034010 -10.673316 -29.277798
[61] -20.500835 -16.165367 -6.902190 -12.705964 -15.182243 -17.407459
[67] -19.836336 -63.355209 -64.929415 -92.388061 -51.074698 -24.163398
[73] -12.403344 -16.025922 -84.222650 -21.950431 -19.167825 -40.021951
[79] -27.117199 -17.270506 -65.171492 -48.507264 -14.898089 -15.323743
[85] -13.889967 -16.995849 -18.359679
因此,在您的分配中,您按索引位置分配 sapply
的值,按元素展开。
likelihoods[calc_sizes] <- sapply(calc_sizes, nb.likelihood)
likelihoods
[1] -1.098612 -2.602690 -3.413620 -4.001407 -4.475865 -4.881330
[7] -5.240275 -5.565697 -5.865802 -6.146104 -6.410490 -6.661805
[13] -6.902190 -7.133302 -7.356445 -7.572668 -7.782825 -7.987619
[19] -8.187640 -8.383385 -8.575276 -8.763676 -8.948901 -9.131222
[25] -9.310881 -9.488087 -9.663029 -9.835872 NA -10.175841
[31] -10.343221 -10.509013 -10.673316 -10.836219 NA -11.158148
[37] NA -11.475373 -11.632377 -11.788381 -11.943435 -12.097586
[43] NA -12.403344 NA -12.705964 -12.856183 NA
[49] -13.154588 NA -13.450466 NA -13.744013 -13.889967
[55] NA NA NA NA NA NA
[61] -14.898089 NA -15.182243 -15.323743 NA -15.605646
[67] NA -15.886160 -16.025922 -16.165367 NA NA
[73] NA NA NA -16.995849 NA -17.270506
[79] -17.407459 NA -17.680645 NA NA NA
[85] NA -18.359679 NA NA NA NA
[91] NA -19.167825 NA NA NA -19.702968
[97] -19.836336 NA -20.102594 -20.235490 NA -20.500835
[103] NA NA NA -21.029806 NA NA
[109] -21.425116 NA NA NA -21.950431 NA
[115] NA NA NA NA NA NA
[121] NA NA NA NA NA NA
[127] NA NA -24.034010 -24.163398 -24.292698 NA
[133] NA NA NA NA NA NA
[139] NA NA NA NA NA NA
[145] NA NA NA NA NA NA
[151] NA NA -27.117199 NA NA NA
[157] NA NA NA NA NA NA
[163] NA NA NA NA NA NA
[169] NA -29.277798 NA NA NA NA
[175] NA NA NA NA NA -30.541489
[181] NA NA NA NA NA -31.297439
[187] NA NA -31.674821 NA NA NA
[193] NA NA NA NA NA NA
[199] NA NA NA NA NA NA
[205] NA NA NA NA NA NA
[211] NA NA NA NA NA NA
[217] NA NA NA NA NA NA
[223] NA NA NA NA NA NA
[229] NA NA NA NA -37.171587 NA
[235] NA NA NA NA NA NA
[241] NA NA NA NA NA NA
[247] NA NA NA NA NA NA
[253] NA NA NA -40.021951 NA NA
[259] NA NA NA NA NA NA
[265] NA NA NA NA NA NA
[271] NA NA NA NA NA NA
[277] NA NA NA NA NA NA
[283] NA NA NA NA NA NA
[289] NA NA NA NA NA NA
[295] NA NA NA NA NA NA
[301] NA NA NA NA NA NA
[307] NA NA NA NA NA NA
[313] NA NA NA NA NA NA
[319] NA NA NA NA NA NA
[325] -48.507264 NA NA NA NA NA
[331] NA NA NA NA NA NA
[337] NA NA NA NA NA NA
[343] NA NA NA -51.074698 NA NA
[349] NA NA NA NA NA NA
[355] NA NA NA NA NA NA
[361] NA NA NA NA NA NA
[367] NA NA NA NA NA NA
[373] NA NA NA NA NA NA
[379] NA NA NA NA NA NA
[385] NA NA NA NA NA NA
[391] NA NA NA NA NA NA
[397] NA NA NA NA NA NA
[403] NA NA NA NA NA NA
[409] NA NA NA NA NA NA
[415] NA NA NA NA NA NA
[421] NA NA NA NA NA NA
[427] NA NA NA NA NA NA
[433] NA NA NA NA NA NA
[439] NA NA NA NA NA NA
[445] NA NA -63.355209 NA NA NA
[451] NA NA NA NA NA NA
[457] NA NA NA -64.929415 NA -65.171492
[463] NA NA NA NA NA NA
[469] NA NA NA NA NA NA
[475] NA NA NA NA NA NA
[481] NA NA NA NA NA NA
[487] NA NA NA NA NA NA
[493] NA NA NA NA NA NA
[499] NA NA NA NA NA NA
[505] NA NA NA NA NA NA
[511] NA NA NA NA NA NA
[517] NA NA NA NA NA NA
[523] NA NA NA NA NA NA
[529] NA NA NA NA NA NA
[535] NA NA NA NA NA NA
[541] NA NA NA NA NA NA
[547] NA -75.557026 NA NA NA NA
[553] NA NA NA NA NA NA
[559] NA NA NA NA NA NA
[565] NA NA NA NA NA NA
[571] NA NA NA NA NA NA
[577] NA NA NA NA NA NA
[583] NA NA NA NA NA NA
[589] NA NA NA NA NA NA
[595] NA NA NA NA NA NA
[601] NA NA NA NA NA NA
[607] -82.659672 NA NA NA NA NA
[613] NA NA NA NA NA NA
[619] NA -84.222650 NA NA NA NA
[625] NA NA NA NA NA NA
[631] NA NA NA NA NA NA
[637] NA NA NA NA NA NA
[643] NA NA NA NA NA -87.586858
[649] NA NA NA NA NA NA
[655] NA NA NA NA NA NA
[661] NA NA NA NA NA NA
[667] NA NA NA NA NA NA
[673] NA NA NA NA NA NA
[679] NA NA NA NA NA NA
[685] NA NA NA -92.388061
注意 calc_size
的第 70 项是 688,sapply(calc_sizes, nb.likelihood)
的第 70 项是 -92.38806(上面的最后一个数值)。
calc_sizes[70]
# [1] 688
sapply(calc_sizes, nb.likelihood)[70]
# [1] -92.3880
要解决,运行沿calc_sizes
的长度由1:87
赋值。另外,考虑用长度初始化 likelihoods
而不是在 c()
.
之后增加对象
likelihoods <- vector(mode="numeric", length=length(calc_sizes))
likelihoods[seq_along(calc_sizes)] <- sapply(calc_sizes, nb.likelihood)
# likelihoods[1:length(calc_sizes)] <- sapply(calc_sizes, nb.likelihood)
然而,由于应用了族函数 return 一个对象,直接分配给 sapply
调用而不初始化任何东西。
likelihoods <- sapply(calc_sizes, nb.likelihood)
likelihoods
[1] -1.098612 -11.788381 -2.602690 -3.413620 -30.541489 -4.001407
[7] -8.187640 -8.575276 -6.146104 -13.154588 -4.881330 -7.987619
[13] -4.475865 -6.410490 -17.680645 -8.948901 -31.297439 -31.674821
[19] -5.565697 -11.943435 -9.663029 -8.383385 -5.240275 -6.661805
[25] -15.886160 -5.865802 -9.310881 -7.572668 -24.292698 -7.356445
[31] -13.450466 -9.488087 -8.763676 -7.782825 -87.586858 -9.131222
[37] -10.175841 -10.509013 -9.835872 -11.158148 -13.744013 -19.702968
[43] -12.856183 -7.133302 -75.557026 -21.425116 -11.475373 -10.343221
[49] -20.102594 -21.029806 -10.836219 -11.632377 -82.659672 -20.235490
[55] -37.171587 -12.097586 -15.605646 -24.034010 -10.673316 -29.277798
[61] -20.500835 -16.165367 -6.902190 -12.705964 -15.182243 -17.407459
[67] -19.836336 -63.355209 -64.929415 -92.388061 -51.074698 -24.163398
[73] -12.403344 -16.025922 -84.222650 -21.950431 -19.167825 -40.021951
[79] -27.117199 -17.270506 -65.171492 -48.507264 -14.898089 -15.323743
[85] -13.889967 -16.995849 -18.359679
我正在分析 R
中的各个代码行,以便更好地理解大型函数。虽然我知道 sapply
apples 一个向量上的函数,但我无法理解它在特定实例中的作用。不幸的是,我在其他地方找不到关于这个确切问题的明确解释。
如果您使用以下代码示例模拟数据,变量 Y
是一个包含 2000 个值的向量,calc_sizes
是 Y 中唯一值的数量(87 个唯一值)。当 sapply
应用于 likelihoods
时,它是在 likelihoods[calc_sizes]<-sapply(calc_sizes, nb.likelihood)
的上下文中完成的。这 return 是一个包含 688 个值的向量
sapply
在这里做什么,how/why 是 return 688 而不是 87 的向量吗?
需要说明的是,代码运行正常 - 没有技术问题。我宁愿 理解 和 学习 而不是盲目地编写最终有效的代码(这样我就不必打扰这个论坛了经常)。
您应该能够逐字复制和粘贴代码以获得提到的结果。感谢您的任何见解!
#################################################################
#Functions that are needed to generate and apply to sample data
#################################################################
bp <- function(gens=20, init.size=1, offspring, ...){
Z <- list() #initiate the list
Z[[1]] <- init.size #set the first position of the list as the number of index cases
i <- 1
while(sum(Z[[i]]) > 0 && i <= gens) {
Z[[i+1]] <- offspring(sum(Z[[i]]), ...)
i <- i+1
}
return(Z)
}
nb.likelihood<-function(x){
lgamma(k*x+(x-1))-(lgamma(k*x)+lgamma(x+1))+(x-1)*log(r0/k)-(k*x+(x-1))*log(1+r0/k)
}
####################
#Generate sample data
####################
set.seed(123)
Z<-replicate(n=2000,bp(offspring=rnbinom,mu=0.9,size=0.25))
Y<-unlist(lapply(Z,function(x) sum(unlist(x))))
#Generate variables in question
calc_sizes<-unique(c(1,Y))
likelihoods<-c()
#########################
#line of code in question
#########################
likelihoods[calc_sizes]<-sapply(calc_sizes, nb.likelihood)
当您执行 likelihoods[calc_sizes] <- sapply(calc_sizes, nb.likelihood)
时,您将 sapply(calc_sizes, nb.likelihood)
的结果保存到位置 calc_sizes
上的向量 likelihoods
中。
由于 calc_sizes
值从 1 到 688,R 将 likelihoods
转换为 688 长度向量。但是如果你 运行 table(is.na(calc_sizes))
你会看到只有 87 个位置没有丢失。
让我给你看一个更简单的例子,希望能让你更容易理解。
假设 v
是一个向量,其值从 1
到 10
,并且 idx
是 v
的索引的子集,其中函数func
会根据idx
对v
进行一些替换操作。
v <- 1:10
idx <- 2:6
func <- function(k) -v[k]**2
到目前为止,v
中的内容如下:
> v
[1] 1 2 3 4 5 6 7 8 9 10
然后,使用sapply(idx, func)
就是对idx
中的每个元素应用函数func
,即c(-v[2]^2,-v[3]^2,-v[4]^2,-v[5]^2,-v[6]^2)
将从sapply(idx, func)
中输出。
最后,输出将被赋值给v[idx]
作为原始值的替换
v[idx] <- sapply(idx, func)
那你就可以看到
> v
[1] 1 -4 -9 -16 -25 -36 7 8 9 10
具体回答 688 的原因是您通过无序索引将值从 calc_size
的值分配给空向量 likelihoods
。具体来说,calc_sizes
包含 87 个整数值。注意最小项是 1,最大项是 688。
calc_sizes
[1] 1 40 2 3 180 4 19 21 10 49 6 18 5 11 81 23 186 189 8
[20] 41 27 20 7 12 68 9 25 16 131 15 51 26 22 17 648 24 30 32
[39] 28 36 53 96 47 14 548 109 38 31 99 106 34 39 607 100 233 42 66
[58] 129 33 170 102 70 13 46 63 79 97 447 460 688 346 130 44 69 620 113
[77] 92 256 153 78 462 325 61 64 54 76 86
但是,您的预期 sapply
还包含 87:
sapply(calc_sizes, nb.likelihood)
[1] -1.098612 -11.788381 -2.602690 -3.413620 -30.541489 -4.001407
[7] -8.187640 -8.575276 -6.146104 -13.154588 -4.881330 -7.987619
[13] -4.475865 -6.410490 -17.680645 -8.948901 -31.297439 -31.674821
[19] -5.565697 -11.943435 -9.663029 -8.383385 -5.240275 -6.661805
[25] -15.886160 -5.865802 -9.310881 -7.572668 -24.292698 -7.356445
[31] -13.450466 -9.488087 -8.763676 -7.782825 -87.586858 -9.131222
[37] -10.175841 -10.509013 -9.835872 -11.158148 -13.744013 -19.702968
[43] -12.856183 -7.133302 -75.557026 -21.425116 -11.475373 -10.343221
[49] -20.102594 -21.029806 -10.836219 -11.632377 -82.659672 -20.235490
[55] -37.171587 -12.097586 -15.605646 -24.034010 -10.673316 -29.277798
[61] -20.500835 -16.165367 -6.902190 -12.705964 -15.182243 -17.407459
[67] -19.836336 -63.355209 -64.929415 -92.388061 -51.074698 -24.163398
[73] -12.403344 -16.025922 -84.222650 -21.950431 -19.167825 -40.021951
[79] -27.117199 -17.270506 -65.171492 -48.507264 -14.898089 -15.323743
[85] -13.889967 -16.995849 -18.359679
因此,在您的分配中,您按索引位置分配 sapply
的值,按元素展开。
likelihoods[calc_sizes] <- sapply(calc_sizes, nb.likelihood)
likelihoods
[1] -1.098612 -2.602690 -3.413620 -4.001407 -4.475865 -4.881330
[7] -5.240275 -5.565697 -5.865802 -6.146104 -6.410490 -6.661805
[13] -6.902190 -7.133302 -7.356445 -7.572668 -7.782825 -7.987619
[19] -8.187640 -8.383385 -8.575276 -8.763676 -8.948901 -9.131222
[25] -9.310881 -9.488087 -9.663029 -9.835872 NA -10.175841
[31] -10.343221 -10.509013 -10.673316 -10.836219 NA -11.158148
[37] NA -11.475373 -11.632377 -11.788381 -11.943435 -12.097586
[43] NA -12.403344 NA -12.705964 -12.856183 NA
[49] -13.154588 NA -13.450466 NA -13.744013 -13.889967
[55] NA NA NA NA NA NA
[61] -14.898089 NA -15.182243 -15.323743 NA -15.605646
[67] NA -15.886160 -16.025922 -16.165367 NA NA
[73] NA NA NA -16.995849 NA -17.270506
[79] -17.407459 NA -17.680645 NA NA NA
[85] NA -18.359679 NA NA NA NA
[91] NA -19.167825 NA NA NA -19.702968
[97] -19.836336 NA -20.102594 -20.235490 NA -20.500835
[103] NA NA NA -21.029806 NA NA
[109] -21.425116 NA NA NA -21.950431 NA
[115] NA NA NA NA NA NA
[121] NA NA NA NA NA NA
[127] NA NA -24.034010 -24.163398 -24.292698 NA
[133] NA NA NA NA NA NA
[139] NA NA NA NA NA NA
[145] NA NA NA NA NA NA
[151] NA NA -27.117199 NA NA NA
[157] NA NA NA NA NA NA
[163] NA NA NA NA NA NA
[169] NA -29.277798 NA NA NA NA
[175] NA NA NA NA NA -30.541489
[181] NA NA NA NA NA -31.297439
[187] NA NA -31.674821 NA NA NA
[193] NA NA NA NA NA NA
[199] NA NA NA NA NA NA
[205] NA NA NA NA NA NA
[211] NA NA NA NA NA NA
[217] NA NA NA NA NA NA
[223] NA NA NA NA NA NA
[229] NA NA NA NA -37.171587 NA
[235] NA NA NA NA NA NA
[241] NA NA NA NA NA NA
[247] NA NA NA NA NA NA
[253] NA NA NA -40.021951 NA NA
[259] NA NA NA NA NA NA
[265] NA NA NA NA NA NA
[271] NA NA NA NA NA NA
[277] NA NA NA NA NA NA
[283] NA NA NA NA NA NA
[289] NA NA NA NA NA NA
[295] NA NA NA NA NA NA
[301] NA NA NA NA NA NA
[307] NA NA NA NA NA NA
[313] NA NA NA NA NA NA
[319] NA NA NA NA NA NA
[325] -48.507264 NA NA NA NA NA
[331] NA NA NA NA NA NA
[337] NA NA NA NA NA NA
[343] NA NA NA -51.074698 NA NA
[349] NA NA NA NA NA NA
[355] NA NA NA NA NA NA
[361] NA NA NA NA NA NA
[367] NA NA NA NA NA NA
[373] NA NA NA NA NA NA
[379] NA NA NA NA NA NA
[385] NA NA NA NA NA NA
[391] NA NA NA NA NA NA
[397] NA NA NA NA NA NA
[403] NA NA NA NA NA NA
[409] NA NA NA NA NA NA
[415] NA NA NA NA NA NA
[421] NA NA NA NA NA NA
[427] NA NA NA NA NA NA
[433] NA NA NA NA NA NA
[439] NA NA NA NA NA NA
[445] NA NA -63.355209 NA NA NA
[451] NA NA NA NA NA NA
[457] NA NA NA -64.929415 NA -65.171492
[463] NA NA NA NA NA NA
[469] NA NA NA NA NA NA
[475] NA NA NA NA NA NA
[481] NA NA NA NA NA NA
[487] NA NA NA NA NA NA
[493] NA NA NA NA NA NA
[499] NA NA NA NA NA NA
[505] NA NA NA NA NA NA
[511] NA NA NA NA NA NA
[517] NA NA NA NA NA NA
[523] NA NA NA NA NA NA
[529] NA NA NA NA NA NA
[535] NA NA NA NA NA NA
[541] NA NA NA NA NA NA
[547] NA -75.557026 NA NA NA NA
[553] NA NA NA NA NA NA
[559] NA NA NA NA NA NA
[565] NA NA NA NA NA NA
[571] NA NA NA NA NA NA
[577] NA NA NA NA NA NA
[583] NA NA NA NA NA NA
[589] NA NA NA NA NA NA
[595] NA NA NA NA NA NA
[601] NA NA NA NA NA NA
[607] -82.659672 NA NA NA NA NA
[613] NA NA NA NA NA NA
[619] NA -84.222650 NA NA NA NA
[625] NA NA NA NA NA NA
[631] NA NA NA NA NA NA
[637] NA NA NA NA NA NA
[643] NA NA NA NA NA -87.586858
[649] NA NA NA NA NA NA
[655] NA NA NA NA NA NA
[661] NA NA NA NA NA NA
[667] NA NA NA NA NA NA
[673] NA NA NA NA NA NA
[679] NA NA NA NA NA NA
[685] NA NA NA -92.388061
注意 calc_size
的第 70 项是 688,sapply(calc_sizes, nb.likelihood)
的第 70 项是 -92.38806(上面的最后一个数值)。
calc_sizes[70]
# [1] 688
sapply(calc_sizes, nb.likelihood)[70]
# [1] -92.3880
要解决,运行沿calc_sizes
的长度由1:87
赋值。另外,考虑用长度初始化 likelihoods
而不是在 c()
.
likelihoods <- vector(mode="numeric", length=length(calc_sizes))
likelihoods[seq_along(calc_sizes)] <- sapply(calc_sizes, nb.likelihood)
# likelihoods[1:length(calc_sizes)] <- sapply(calc_sizes, nb.likelihood)
然而,由于应用了族函数 return 一个对象,直接分配给 sapply
调用而不初始化任何东西。
likelihoods <- sapply(calc_sizes, nb.likelihood)
likelihoods
[1] -1.098612 -11.788381 -2.602690 -3.413620 -30.541489 -4.001407
[7] -8.187640 -8.575276 -6.146104 -13.154588 -4.881330 -7.987619
[13] -4.475865 -6.410490 -17.680645 -8.948901 -31.297439 -31.674821
[19] -5.565697 -11.943435 -9.663029 -8.383385 -5.240275 -6.661805
[25] -15.886160 -5.865802 -9.310881 -7.572668 -24.292698 -7.356445
[31] -13.450466 -9.488087 -8.763676 -7.782825 -87.586858 -9.131222
[37] -10.175841 -10.509013 -9.835872 -11.158148 -13.744013 -19.702968
[43] -12.856183 -7.133302 -75.557026 -21.425116 -11.475373 -10.343221
[49] -20.102594 -21.029806 -10.836219 -11.632377 -82.659672 -20.235490
[55] -37.171587 -12.097586 -15.605646 -24.034010 -10.673316 -29.277798
[61] -20.500835 -16.165367 -6.902190 -12.705964 -15.182243 -17.407459
[67] -19.836336 -63.355209 -64.929415 -92.388061 -51.074698 -24.163398
[73] -12.403344 -16.025922 -84.222650 -21.950431 -19.167825 -40.021951
[79] -27.117199 -17.270506 -65.171492 -48.507264 -14.898089 -15.323743
[85] -13.889967 -16.995849 -18.359679