gpt4 book ai didi

r - 循环功能并将列添加到 R 中的数据框

转载 作者:行者123 更新时间:2023-12-05 01:03:51 26 4
gpt4 key购买 nike

我想在数据帧上循环一个函数并将信息从函数添加到数据帧。我已经阅读了许多关于循环和将函数应用于数据帧的相关文章,这些文章使我接近我需要的东西,但还没有完全达到,所以我希望人们能帮助我。

我有许多看起来像这样的数据框

dat1=as.data.frame(matrix(rnorm(25),ncol=5))
dat2=as.data.frame(matrix(rnorm(25),ncol=5))
dat3=as.data.frame(matrix(rnorm(25),ncol=5))

我想计算其中一些列的平均值并添加到数据框的末尾。因此,我编写了一个函数来计算数据帧的均值:
my_fun <-  function(dataframe){
rowMeans( dataframe[ , c("V1","V2")],na.rm=TRUE)
}

要将这个函数应用于一个数据帧,我这样做:
 dat1$V6<- my_fun(dat1)

但我希望能够遍历所有数据帧并将此均值列添加到每个 df 的末尾。

在阅读了一些有用的帖子后,我创建了一个列表并使用了 sapply:
dfList<-list(dat1,dat2,dat3)#create list
sapply(dfList, my_fun) #apply function to list

这给了我想要的值,但我不希望它们在单独的输出中 - 我希望他们简单地在原始数据帧上添加一列 - 当我将函数应用于单个数据帧时会发生这种情况。谁能告诉我如何做到这一点?或者将我指向描述如何执行此操作的帖子(我搜索了高低,但可能输入了错误的关键字)如果您知道如何操作,我相信它非常简单!

最佳答案

如果您使用 data.table,它会更容易并且至少快 100 倍

require(data.table)
set.seed(612)
dat1=as.data.table(matrix(rnorm(25),ncol=5))
dat2=as.data.table(matrix(rnorm(25),ncol=5))
dat3=as.data.table(matrix(rnorm(25),ncol=5))

dtList <- list(dat1, dat2, dat3)

for (dat in dtList) {
dat[,V6:=(V1 + V2)/2]
}

这给出了以下输出:
> dtList

[[1]]
V1 V2 V3 V4 V5 V6
1: 0.3903228 -1.1581608 1.0171311 0.3866628 0.02756137 -0.38391897
2: -0.6030124 0.4713771 -2.4204376 -0.2843527 0.53463600 -0.06581764
3: -0.9850333 0.3343518 -1.2329712 -1.1767533 0.56714483 -0.32534080
4: -0.1591335 -0.6729444 0.5062648 -0.3001857 -0.84896068 -0.41603897
5: 1.7127203 0.3149884 1.7633945 1.7824786 -0.90316850 1.01385434

[[2]]
V1 V2 V3 V4 V5 V6
1: -1.22790810 0.8429506 0.4921844 -0.29686607 -0.9501956 -0.1924788
2: 0.09405923 -1.6970403 0.1280003 1.22284944 0.8667643 -0.8014905
3: 0.55298783 -0.1081849 0.4120268 -0.56411756 1.9135802 0.2224015
4: -0.82621808 0.4753731 0.4755664 -0.05885804 0.9658787 -0.1754225
5: 0.44262554 0.3036363 -1.7404580 0.88870595 1.4826431 0.3731309

[[3]]
V1 V2 V3 V4 V5 V6
1: 0.82085834 0.07221027 1.8835042 0.2563714 0.27891033 0.44653430
2: 0.00445113 1.89450534 0.3878858 1.8385587 -1.86381524 0.94947824
3: 0.66458950 -1.31023362 -0.9403257 1.2128128 0.74922668 -0.32282206
4: -1.40169143 -1.52925147 0.8232823 0.3391147 0.33463875 -1.46547145
5: 1.10566340 -1.16512217 0.3859652 0.8123110 0.04712086 -0.02972939

关于r - 循环功能并将列添加到 R 中的数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24183083/

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