gpt4 book ai didi

R如何引用data.frames列表中的列?然后使用 lapply?

转载 作者:行者123 更新时间:2023-12-01 09:24:54 25 4
gpt4 key购买 nike

假设我有一个数据框列表:

DF1 <- data.frame(mtcars)
DF2 <- data.frame(mtcars*2)
mydatalist <-list(DF1,DF2)

如何将函数应用于列表中的所有列,并返回结果列表?例如,假设我想提取 qsec 列的第一个数字(第 7 个)。我可以很容易地为第一项调用它:

mydatalist[[1]][7]

但是假设我想查看列表中每个元素(DF1 和 DF2)的所有第 7 列。我怎么调用它?

这不起作用:

 mydatalist[[]][7]
Error in mydatalist[[]] : invalid subscript type 'symbol'

我的目的是我想对其应用一个函数,比如 substr:

lapply(mydatalist[[1]][7],substr,0,2)
lapply(mydatalist[[2]][7],substr,0,2)

但这不起作用:

lapply(mydatalist[[]][7],substr,0,2)

我该怎么做?

谢谢!

最佳答案

要仅获取列表中每个数据框的第 7 列,可以使用

lapply(mydatalist, "[", 7)  ## you can also get multiple columns with c(1,5,etc)

将列作为数据框,而

lapply(mydatalist, "[[", 7)

将其视为矢量。要按名称引用它/它们,您可以像使用列号一样使用名称

lapply(mydatalist, "[", "qsec")

要在列上使用 substr,首先您必须访问该列。然后你申请可以使用匿名函数来处理substr

lapply(mydatalist, function(x) substr(x[[7]], 0, 2)) ## or x[["qsec"]]
# [[1]]
# [1] "16" "17" "18" "19" "17" "20" "15" "20" "22" "18"
# [11] "18" "17" "17" "18" "17" "17" "17" "19" "18" "19"
# [21] "20" "16" "17" "15" "17" "18" "16" "16" "14" "15"
# [31] "14" "18"
#
# [[2]]
# [1] "32" "34" "37" "38" "34" "40" "31" "40" "45" "36"
# [11] "37" "34" "35" "36" "35" "35" "34" "38" "37" "39"
# [21] "40" "33" "34" "30" "34" "37" "33" "33" "29" "31"
# [31] "29" "37"

关于R如何引用data.frames列表中的列?然后使用 lapply?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26766071/

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