簡體   English   中英

向 data.frames 列表中的每個 data.frame 添加新列

[英]Add new column to each data.frame in list of data.frames

我有一個 data.frames 列表,並想使用 R 包 caret 在每個 data.frame, folds創建一個新列。 到目前為止,我嘗試編寫一個自定義函數,然后使用 map 將其應用到我的列表中。 任何建議,將不勝感激。

library(caret)

one = airquality[1:10,]
two = airquality[11:20,]
listdf <- list(one, two)

foldfunc <- function(x) {
  folds <- createFolds(1:nrow(x), k=10,list = F)
  x$folds <- folds
}

map(listdf, foldfunc)

你只需要讓你的函數返回數據框:

foldfunc <- function(x) {
  folds <- createFolds(1:nrow(x), k=10,list = F)
  x$folds <- folds
  return(x)
}

在您的代碼中,您的函數正在返回folds 由於您沒有明確說明要返回什么,該函數假定所需的結果是它計算的最后一件事,這就是您接收數值向量(由createFolds計算的createFolds )的原因。

如果你用你的函數嘗試print(foldfunc(listdf[[1]])) ,你會看到:

print(foldfunc(listdf[[1]]))
# [1]  1  2  3  4  5  6  7  8  9 10

在新版本中,將提供帶有folds列的數據框。

使用tidyverse

library(dplyr)
library(purrr)
listdf <- map(listdf, ~ .x %>% 
     mutate(folds = createFolds(row_number(), k = 10, list = FALSE)))

暫無
暫無

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

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