返回列表值的控制流
Control flow for returning list values
我正在尝试 return 给定此函数的值列表:
Pass_or_fail <- function(y){
x = round(runif(y, 0, 100), 1)
if(x>50){
list(print("Passed"))
}else if(x < 50){
list(print("Failed"))
}
}
当我将一个值传递给 y
例如 20
时,这应该 return 一个 Passed
或 Failed
字符的列表。但是,上面的函数只有 return 一个向量。我希望它 return 相对于上面提供的条件的 20 个值,主要是列表格式。
我想像这样创建一个变量:
t_list <- list(1:20)
#then
Map(Pass_or_fail(20), t_list)
示例输出(虽然不准确):
"Passed" "Failed" "Passed" "Failed" "Passed" "Failed" "Passed" "Failed" "Passed" "Failed" "Passed" "Failed" "Passed" "Failed" "Passed" "Failed" "Passed" "Failed" "Passed" "Failed"
我好像还想不通。
应用 map
,您编写的函数将向量而不是单个元素作为输入。试试这个:
Pass_or_fail2 <- function(y) {
x <- round(runif(y, 0, 100), 1)
condition <- ifelse(x > 50, "passed", "failed")
print(condition)
}
map(Pass_or_fail2(10), 1)
如果您想在函数 Pass_or_fail2
中将向量作为输出注释 print
并使用:
unlist(map(Pass_or_fail2(10), 1))
从表面上看你的问题,
Pass_or_fail <- function(y){
x = round(runif(y, 0, 100), 1)
lapply(
x,
FUN = function(x){
if(x>50){
list(print("Passed"))
}else if(x < 50){
list(print("Failed"))
}
}
)
}
注意: 如果您定义的函数中没有 lapply
,则无法计算 x
中的所有值,因为长度由 y
。通过使用 lapply
,您将根据您定义的条件评估 x
中的所有值。
然后将其输入 lapply
,得到以下结果;
results <- lapply(
X = 1:10,
FUN = Pass_or_fail
)
这给出了 1 list
公关。 X
,每个函数的长度为 x
。
我正在尝试 return 给定此函数的值列表:
Pass_or_fail <- function(y){
x = round(runif(y, 0, 100), 1)
if(x>50){
list(print("Passed"))
}else if(x < 50){
list(print("Failed"))
}
}
当我将一个值传递给 y
例如 20
时,这应该 return 一个 Passed
或 Failed
字符的列表。但是,上面的函数只有 return 一个向量。我希望它 return 相对于上面提供的条件的 20 个值,主要是列表格式。
我想像这样创建一个变量:
t_list <- list(1:20)
#then
Map(Pass_or_fail(20), t_list)
示例输出(虽然不准确):
"Passed" "Failed" "Passed" "Failed" "Passed" "Failed" "Passed" "Failed" "Passed" "Failed" "Passed" "Failed" "Passed" "Failed" "Passed" "Failed" "Passed" "Failed" "Passed" "Failed"
我好像还想不通。
应用 map
,您编写的函数将向量而不是单个元素作为输入。试试这个:
Pass_or_fail2 <- function(y) {
x <- round(runif(y, 0, 100), 1)
condition <- ifelse(x > 50, "passed", "failed")
print(condition)
}
map(Pass_or_fail2(10), 1)
如果您想在函数 Pass_or_fail2
中将向量作为输出注释 print
并使用:
unlist(map(Pass_or_fail2(10), 1))
从表面上看你的问题,
Pass_or_fail <- function(y){
x = round(runif(y, 0, 100), 1)
lapply(
x,
FUN = function(x){
if(x>50){
list(print("Passed"))
}else if(x < 50){
list(print("Failed"))
}
}
)
}
注意: 如果您定义的函数中没有 lapply
,则无法计算 x
中的所有值,因为长度由 y
。通过使用 lapply
,您将根据您定义的条件评估 x
中的所有值。
然后将其输入 lapply
,得到以下结果;
results <- lapply(
X = 1:10,
FUN = Pass_or_fail
)
这给出了 1 list
公关。 X
,每个函数的长度为 x
。