gpt4 book ai didi

list - 如何避免R中的循环:从列表中选择项目

转载 作者:行者123 更新时间:2023-12-03 08:50:19 24 4
gpt4 key购买 nike

我可以使用循环来解决此问题,但我尝试在 vector 中进行思考,以便我的代码更具R风格。

我有一个名字 list 。格式为firstname_lastname。我想从此列表中删除一个仅包含名字的单独列表。我似乎无法确定该怎么做。以下是一些示例数据:

t <- c("bob_smith","mary_jane","jose_chung","michael_marx","charlie_ivan")
tsplit <- strsplit(t,"_")

看起来像这样:
> tsplit
[[1]]
[1] "bob" "smith"

[[2]]
[1] "mary" "jane"

[[3]]
[1] "jose" "chung"

[[4]]
[1] "michael" "marx"

[[5]]
[1] "charlie" "ivan"

我可以使用这样的循环弄清我想要的东西:
for (i in 1:length(tsplit)){
if (i==1) {t_out <- tsplit[[i]][1]} else{t_out <- append(t_out, tsplit[[i]][1])}
}

这会给我这个:
t_out
[1] "bob" "mary" "jose" "michael" "charlie"

那么我该如何做到没有循环呢?

最佳答案

您可以使用apply(或sapply)

t <- c("bob_smith","mary_jane","jose_chung","michael_marx","charlie_ivan")
f <- function(s) strsplit(s, "_")[[1]][1]
sapply(t, f)

bob_smith mary_jane jose_chung michael_marx charlie_ivan

"bob" "mary" "jose" "michael" "charlie"

另请: A brief introduction to “apply” in R

关于list - 如何避免R中的循环:从列表中选择项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1355355/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com