列出具有条件逻辑的向量
List to a vector with conditional logic
我有一个列表,例如,
lst <- list(1, c(3, 4, 6), c(2, 5))
此列表的每个第一个元素都非常重要。您可以考虑列表位置中的数字。例如,有 1 到 6 个位置,其中位置 1 未与任何其他位置组合。位置 4 和 6 与位置 3 组合,位置 5 与位置 2 组合。现在我需要创建一个向量,
W1 W2 W3 W4 W5 W6
W1 W2 W3 W3 W2 W3
这是一个命名向量。名称是位置的名称,值是它们所组合的位置。这看起来很容易,但花了我很多时间。提前谢谢你。
res <- character(length(unlist(lst)))
names(res) <- paste0("W", seq_along(unlist(lst)))
lapply(lst, function(x) res[x] <<- paste0("W", x[1]))
res
# W1 W2 W3 W4 W5 W6
# "W1" "W2" "W3" "W3" "W2" "W3"
编辑
或者这可能是 for
循环更好(并避免 <<-
)的情况之一:
res <- character(length(unlist(lst)))
names(res) <- paste0("W", seq_along(unlist(lst)))
for (x in lst) res[x] <- paste0("W", x[1])
res
# W1 W2 W3 W4 W5 W6
# "W1" "W2" "W3" "W3" "W2" "W3"
另一种选择。如果可能,请检查并提供时间安排。它可能会对其他人有所帮助。
t<-list()
for(t1 in lst){t[paste0("w",t1)]<-paste0("w",t1[1])}
output<-unlist(t, recursive = TRUE, use.names = TRUE)
我有一个列表,例如,
lst <- list(1, c(3, 4, 6), c(2, 5))
此列表的每个第一个元素都非常重要。您可以考虑列表位置中的数字。例如,有 1 到 6 个位置,其中位置 1 未与任何其他位置组合。位置 4 和 6 与位置 3 组合,位置 5 与位置 2 组合。现在我需要创建一个向量,
W1 W2 W3 W4 W5 W6
W1 W2 W3 W3 W2 W3
这是一个命名向量。名称是位置的名称,值是它们所组合的位置。这看起来很容易,但花了我很多时间。提前谢谢你。
res <- character(length(unlist(lst)))
names(res) <- paste0("W", seq_along(unlist(lst)))
lapply(lst, function(x) res[x] <<- paste0("W", x[1]))
res
# W1 W2 W3 W4 W5 W6
# "W1" "W2" "W3" "W3" "W2" "W3"
编辑
或者这可能是 for
循环更好(并避免 <<-
)的情况之一:
res <- character(length(unlist(lst)))
names(res) <- paste0("W", seq_along(unlist(lst)))
for (x in lst) res[x] <- paste0("W", x[1])
res
# W1 W2 W3 W4 W5 W6
# "W1" "W2" "W3" "W3" "W2" "W3"
另一种选择。如果可能,请检查并提供时间安排。它可能会对其他人有所帮助。
t<-list()
for(t1 in lst){t[paste0("w",t1)]<-paste0("w",t1[1])}
output<-unlist(t, recursive = TRUE, use.names = TRUE)