[英]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)
現在我想遍歷howmany
和howmuch
的值。 例如, 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.