Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 使用lappy在元素数不同的列表上应用函数_R - Fatal编程技术网

R 使用lappy在元素数不同的列表上应用函数

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]]

最近我开始在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]]
[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。请花点时间阅读。是的。这非常有帮助。谢谢!