gpt4 book ai didi

r - 如何获取列表中每个元素的第二个子元素

转载 作者:行者123 更新时间:2023-12-03 05:43:55 27 4
gpt4 key购买 nike

我知道我以前遇到过这个问题,但现在我有点精神障碍。由于我在 SO 上找不到它,我会将其发布在这里,以便下次可以找到它。

我有一个数据框,其中包含表示 ID 标签的字段。该标签有两部分:字母前缀和数字后缀。我想将其拆分并使用这些值创建两个新字段。

structure(list(lab = c("N00", "N01", "N02", "B00", "B01", "B02", 
"Z21", "BA01", "NA03")), .Names = "lab", row.names = c(NA, -9L
), class = "data.frame")

df$pre<-strsplit(df$lab, "[0-9]+")
df$suf<-strsplit(df$lab, "[A-Z]+")

这给出

   lab pre  suf
1 N00 N , 00
2 N01 N , 01
3 N02 N , 02
4 B00 B , 00
5 B01 B , 01
6 B02 B , 02
7 Z21 Z , 21
8 BA01 BA , 01
9 NA03 NA , 03

因此,第一个 strsplit 工作正常,但第二个给出一个列表,每个列表都有两个元素、一个空字符串和我想要的结果,并将它们都填充到数据帧列中。

如何从列表的每个元素中选择第二个子元素? (或者,有没有更好的方法来做到这一点)

最佳答案

要选择每个列表项的第二个元素:

R> sapply(df$suf, "[[", 2)
[1] "00" "01" "02" "00" "01" "02" "21" "01" "03"

使用正则表达式的替代方法:

df$pre <- sub("^([A-Z]+)[0-9]+", "\\1", df$lab)
df$suf <- sub("^[A-Z]+([0-9]+)", "\\1", df$lab)

关于r - 如何获取列表中每个元素的第二个子元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2803460/

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