簡體   English   中英

如何使用 function 在 R 中基於 arguments 創建多個數據幀

[英]How to use a function to create multiple dataframes based on arguments in R

我有一個數據框,其中有很多列具有相同的結尾(a___1、a___2、b___1、b___2 等)。 我想要包含相應列的不同數據框(df_a 包含 a___1 和 a___2 等)

由於每個數據框中的列數很大,我想用 function 來完成。

我嘗試了以下 function。

create_df_sud_form <- function(x, y){

  noquote(paste("df_sud_form_", x, sep="")) <- data.frame (
    idata[, paste(y, "___1", sep="")],
    idata[, paste(y, "___2", sep="")],
    idata[, paste(y, "___3", sep="")],
    idata[, paste(y, "___4", sep="")],
    idata[, paste(y, "___5", sep="")],
    idata[, paste(y, "___6", sep="")],
    idata[, paste(y, "___7", sep="")],
    idata[, paste(y, "___8", sep="")],
    idata[, paste(y, "___9", sep="")]
  )
}

create_df_sud_form("alk", "l_alk_009")

代碼有效,如果我不在 function 中使用它。但是一旦我嘗試在 function 中運行它並使用 function,就會出現錯誤(由谷歌翻譯:“任務的目標不會擴展到任何語言目的”)。

謝謝你的幫助!

這就是我將 go 關於它的方式。

library(tidyverse)

df <- tibble(a___1 = 1:10, a___2 = 11:20, b___1 = 1:10, b___2 = 11:20, c___1 = 1:10, c___2 = 11:20)  

split_out <- function(start) {
  out <- df %>% 
    select(starts_with(start))      
  assign(paste0("df_", start), out, envir = .GlobalEnv)      
}

split_out("b")

df_b

 > df_b
# A tibble: 10 × 2
   b___1 b___2
   <int> <int>
 1     1    11
 2     2    12
 3     3    13
 4     4    14
 5     5    15
 6     6    16
 7     7    17
 8     8    18
 9     9    19
10    10    20

暫無
暫無

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

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