R 使用lappy在元素数不同的列表上应用函数
最近我开始在R上编写代码,我遇到了一个问题,我看了很多东西,但都没能弄明白。R 使用lappy在元素数不同的列表上应用函数,r,R,最近我开始在R上编写代码,我遇到了一个问题,我看了很多东西,但都没能弄明白。 我有一个如下所示的列表,我正在尝试将此函数应用于此列表。我希望找到的是每个假和真的一个值。 但当我使用lappy函数时,我得到了以下警告: 在if(x){ 该条件的长度大于1,并且仅使用第一个元素。 我犯了什么错误?先谢谢你 function(x) {if(x) {runif(1, IQ - VAR, IQ + VAR)} else {runif(1,0.20 - VAR , 0.20 + VAR)}} [[1]]
我有一个如下所示的列表,我正在尝试将此函数应用于此列表。我希望找到的是每个假和真的一个值。 但当我使用lappy函数时,我得到了以下警告: 在if(x){ 该条件的长度大于1,并且仅使用第一个元素。 我犯了什么错误?先谢谢你
function(x) {if(x)
{runif(1, IQ - VAR, IQ + VAR)} else {runif(1,0.20 - VAR , 0.20 + VAR)}}
[[1]]
[1] FALSE TRUE
[[2]]
[1] FALSE TRUE
[[3]]
[1] FALSE TRUE
[[4]]
[1] FALSE FALSE FALSE TRUE
[[5]]
[1] FALSE FALSE FALSE TRUE
[[6]]
[1] FALSE FALSE FALSE TRUE
[[7]]
[1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE
您的问题是对向量(列表元素)使用
if
函数。您应该使用ifelse
:
lapply(L, function(x){ifelse(x, runif(1, IQ - VAR, IQ + VAR), runif(1,0.20 - VAR , 0.20 + VAR))})
例如:
L = list(c(F,T),c(F,F,F,T))
VAR = 1
IQ = 3
lapply(L, function(x){ifelse(x,runif(1, IQ - VAR, IQ + VAR), runif(1,0.20 - VAR , 0.20 + VAR))})
[[1]]
[1] -0.1924877 2.0677188
[[2]]
[1] 1.158114 1.158114 1.158114 2.408010
您好,欢迎来到StackOverflow。请花点时间阅读。是的。这非常有帮助。谢谢!