【发布时间】:2021-11-14 02:20:06
【问题描述】:
首先,我将for loop 用于数字向量,效果很好。
当我使用lapply 函数时,结果不是我想要的。我只想要一个列表中的一个元素。
这是我的例子
# With for loop, the outcome is one vector of numbers
x <- c(0.2,0.5,0.03,0.006,0.08)
p.value <- NULL
for (i in 1:length(x)){
if(x[i] > 0.5 p.value[i] <- (1-x[i])*2
else p.value[i] <- x[i]*2
# with lapply
lapply(x, function(x) {if(x > 0.5) p.value <- (1-x)*2 else p.value <- x*2
lapply 的结果是相同结果的组合。我有点意识到这个问题,但我不知道如何更改我的代码。对此有何建议?
【问题讨论】:
-
如果你只想要一个向量,你可以包含
unlist(),即unlist(lapply(x, function(x) {if(x > 0.5) {p.value <- (1-x)*2} else {p.value <- x*2}}))