gpt4 book ai didi

r - 从 strsplit 之后的嵌套列表中提取第 n 个元素 - R

转载 作者:行者123 更新时间:2023-12-04 09:36:22 24 4
gpt4 key购买 nike

我一直试图了解如何处理 strsplit 的输出好一些。我经常有这样的数据,我希望拆分:

mydata <- c("144/4/5", "154/2", "146/3/5", "142", "143/4", "DNB", "90")

#[1] "144/4/5" "154/2" "146/3/5" "142" "143/4" "DNB" "90"

拆分后的结果如下:
strsplit(mydata, "/")

#[[1]]
#[1] "144" "4" "5"

#[[2]]
#[1] "154" "2"

#[[3]]
#[1] "146" "3" "5"

#[[4]]
#[1] "142"

#[[5]]
#[1] "143" "4"

#[[6]]
#[1] "DNB"

#[[7]]
#[1] "90"

我从 strsplit 帮助指南中知道不会生成最终的空字符串。因此,根据要拆分的“/”的数量,我的每个结果中都会有 1、2 或 3 个元素

获取第一个元素非常简单:
sapply(strsplit(mydata, "/"), "[[", 1)

#[1] "144" "154" "146" "142" "143" "DNB" "90"

但是我不确定如何获得第二个、第三个......当每个结果中的元素数量不等时。
sapply(strsplit(mydata, "/"), "[[", 2)

# Error in FUN(X[[4L]], ...) : subscript out of bounds

我希望从一个有效的解决方案中返回,如下:
#[1] "4" "2" "3" "NA" "4" "NA" "NA" 

这是一个相对较小的例子。我可以很容易地对这些数据做一些 for 循环,但是对于具有 1000 次观察的真实数据来运行 strsplit 以及由此产生的几十个元素,我希望找到一个更通用的解决方案。

最佳答案

(至少关于一维向量)[好像回来了NA当 "i > length(x)"而 [[返回错误。

x = runif(5)
x[6]
#[1] NA
x[[6]]
#Error in x[[6]] : subscript out of bounds

挖一点, do_subset_dflt (即 [ )调用 ExtractSubset 我们注意到当一个想要的索引 ("ii") 是 ">length(x)" NA返回(稍微修改为干净):
if(0 <= ii && ii < nx && ii != NA_INTEGER)
result[i] = x[ii];
else
result[i] = NA_INTEGER;

另一方面 do_subset2_dflt (即 [[ )如果想要的索引(“offset”)是“> length(x)”(稍微修改为干净),则返回错误:
if(offset < 0 || offset >= xlength(x)) {
if(offset < 0 && (isNewList(x)) ...
else errorcall(call, R_MSG_subs_o_b);
}

哪里 #define R_MSG_subs_o_b _("subscript out of bounds")
(我不确定上面的代码片段,但根据他们的返回,它们似乎是相关的)

关于r - 从 strsplit 之后的嵌套列表中提取第 n 个元素 - R,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25608889/

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