gpt4 book ai didi

r - 用 R 中的另一个列表子集数据框列中的列表

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

我在 R 中有一个数据框,如下所示:

    id  event_explain
1 80 list("Minutes played", 0, 0)
2 81 list("Minutes played", 0, 0)
3 82 list("Bonus", 2, 2, "Clean sheets", 1, 4, "Minutes played", 90, 2)

我试图在“播放分钟数”之后取出数字,所以在这个例子中,我最终会得到 0,0,90 之类的东西。

我创建了某种索引列表来标识元素“Minutes Played”
    list(c(TRUE, FALSE, FALSE), c(TRUE, FALSE, FALSE), c(FALSE, FALSE, 
FALSE, FALSE, FALSE, FALSE, TRUE, FALSE, FALSE)

并且在想也许我可以(以某种方式)置换每个列表元素中的 T/F,然后提取元素后面的数字。

问题是,我什至不知道如何对数据框列进行子集化以提取列表的元素,更不用说置换 True 和 False 了!

有什么想法吗?

最佳答案

这是一种解决方案。

首先,一些示例数据:

mydf <- data.frame(
id = c(80, 81, 82), event = I(
list(list("Minutes played", 0, 0),
list("Minutes played", 0, 0),
list("Bonus", 2, 2, "Clean sheets", 1, 4, "Minutes played", 90, 2))))

使用 grep识别字符串“播放的分钟数”。这将返回数字位置。您需要紧随其后的值,因此我们将 grep 的输出加 1获取您要查找的数字。
unlist(sapply(mydf$event, function(x) x[grep("Minutes played", x)+1]))
# [1] 0 0 90

或者,或者,使用 match :
unlist(sapply(mydf$event, function(x) x[match("Minutes played", x)+1]))
# [1] 0 0 90

或者,既然你说你已经创建了一个索引列表,你可以只使用以下内容:
## Your index list
Index <- list(c(TRUE, FALSE, FALSE),
c(TRUE, FALSE, FALSE),
c(FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, FALSE, FALSE))

## Extracting what you want
unlist(mydf$event)[which(unlist(Index))+1]
# [1] "0" "0" "90"

关于r - 用 R 中的另一个列表子集数据框列中的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18537356/

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