我可以使用循环解决这个问题,但我正在尝试思考向量化的方法,以便我的代码更像R。
我有一个名字列表。格式为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"
那么我如何在不使用循环的情况下完成这个任务呢?