R 如何将数据帧作为参数传递给函数?

R 如何将数据帧作为参数传递给函数?,r,function,R,Function,T12是一个包含22列(但我只希望第2列到第8列)和大约一百万个条目的数据帧。 第一列中的一些条目不适用。每当第一列中有NA时,complete cases将删除整行。一切正常 我有更多的数据帧,我不想为每个数据帧再次编写整个代码 我希望有类似于这个函数的东西,并希望把它放在x,T12,T13,T14,T15等等 你能帮我吗 split <- function (x){ x <- x[,2:8] x <- x[complete.cases(x[ ,1]),] }

T12是一个包含22列(但我只希望第2列到第8列)和大约一百万个条目的数据帧。 第一列中的一些条目不适用。每当第一列中有NA时,complete cases将删除整行。一切正常

我有更多的数据帧,我不想为每个数据帧再次编写整个代码

我希望有类似于这个函数的东西,并希望把它放在x,T12,T13,T14,T15等等

你能帮我吗

split <- function (x){
  x <- x[,2:8]
  x <- x[complete.cases(x[ ,1]),]
  }

split
  • 如果有名为
    “T12”
    “T13”
    等的数据帧,则可以使用模式
    “T”
    ,后跟数字,使用
    ls
    捕获字符向量中的所有此类数据帧

  • 使用
    mget
    可以从命名列表中的字符向量中获取数据帧

  • 然后可以使用
    lappy
    在每个列表上应用
    split
    函数


PS-
split
是R中的默认函数,因此最好为函数指定不同的名称。

创建这些数据帧时,应将其放入列表中。如果您不再需要mget或类似的方法,那么代码将更加简单和干净。像这样使用
list2env
不是其创建者想要的用例。这也从来没有必要。
new_data <- lapply(mget(ls(pattern = 'T\\d+')), split)
list2env(new_data, .GlobalEnv)