簡體   English   中英

如何基於data.frame中的列訪問data.frame中列表的成員?

[英]How do I access a member of a list within a data.frame based on a column in the data.frame?

我有一個data.frame,如下所示:

x <- structure(list(tsv_level = c(2, 3, 2, 3, 2, 2), tsv_payout = structure(list(
    c(0, 700, 1400, 2100, 2800), c(0, 300, 600, 900, 1200), c(0, 
    300, 600, 900, 1200), c(0, 3000, 6000, 9000, 12000), c(0, 
    700, 1400, 2100, 2800), c(0, 1000, 2000, 3000, 4000)), class = "AsIs")), .Names = c("tsv_level", 
"tsv_payout"), row.names = c(NA, -6L), class = c("tbl_df", "tbl", 
"data.frame"))

我想創建一個返回一個第三列tsv_levelth內每個列表的元素tsv_payout

我可以通過對第1行執行此操作來單獨執行此操作: x$tsv_payout[[1]][2]和對第2行執行x$tsv_payout[[2]][3] ,但是如何對其中的所有行執行此操作data.frame?

您可以使用“隱藏”循環

x$v = with(x, mapply(`[[`, tsv_payout, tsv_level))

或與transform類似。

Frank的答案有效,並且僅依賴於基數R,但看起來dplyr包中的dplyr ()也會在這里起作用。

x %>% rowwise() %>%
    mutate(v = tsv_payout[tsv_level]) 

不如@Frank的解決方案好,但它也能完成工作:

x$v <- sapply(seq_along(x$tsv_level), function(i) x$tsv_payout[[i]][x$tsv_level[i]])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM