簡體   English   中英

循環遍歷值以更改數據框

[英]Looping through values to make changes in data frame

我有一個代碼在 dataframe 中進行了一些更改。

 value <- iris[1:120,]
 
 cngfunc <- function(day,howmany,howmuch){
   shuffled= day[sample(1:nrow(day)), ]
   n = as.integer((howmany/100)*nrow(day)) #select percentage of data to be changed
   extracted <- shuffled[1:n, ]
   extracted$changed <- extracted[,1]*((howmuch/100)+1) #how much the data changes
   extracted}
   
cngfunc(value,10,20)

現在我想遍歷howmanyhowmuch的值。 例如, howmuch <- c(10,20,30,40,50)和 howmany < howmany <- c(10,20,30,40,50)所以第一個結果是cngfunc(value,10,10)cngfunc(value,10,20) , cngfunc(value,10,30) ....和cngfunc(value,20,10) , cngfunc(value,20,20)等等,這樣我就有 25不同的數據框。

有沒有辦法做到這一點?

您可以使用expand.grid來獲取所有組合,並使用map2創建數據框列表:

library(tidyverse)

combos <- expand.grid(c(10,20,30,40,50), c(10,20,30,40,50))

result <- map2(combos$Var1, combos$Var2, function(x, y) cngfunc(value, x, y)) %>%
  setNames(tidyr::unite(combos, Var, Var1:Var2, sep = "-")$Var)

不確定您從哪里獲得 120 個數據幀,因為 5 * 5 = 25。不過,這應該是一般的想法。

暫無
暫無

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

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