[英]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.