有没有一种方法可以在R函数中为数据帧中的每个子集指定一个不同的对象名?

有没有一种方法可以在R函数中为数据帧中的每个子集指定一个不同的对象名?,r,function,replace,rename,R,Function,Replace,Rename,我需要从一个data.frame生成不同的子集,然后将这些不同的子集用于后续操作。 因此,我需要给每个子集一个唯一的名称。我尝试编写不同的函数,但不知道如何编写。 这里我展示了一个子集的函数,即datsub: run_subsets也许您最好动态创建子集。一种解决方案是,您可以创建一个带有“子集”列的数据框,如下所示: df <- data.frame( a = 1:10 , b = letters[1:10] ) subsets <- data.frame(

我需要从一个data.frame生成不同的子集,然后将这些不同的子集用于后续操作。 因此,我需要给每个子集一个唯一的名称。我尝试编写不同的函数,但不知道如何编写。
这里我展示了一个子集的函数,即datsub:


run_subsets也许您最好动态创建子集。一种解决方案是,您可以创建一个带有“子集”列的数据框,如下所示:

df <- data.frame(
    a = 1:10
    , b = letters[1:10]
)

subsets <- data.frame(
    datsub1 = df$b == "d"
    , datsub2 = df$a < 5
)

df[subsets$datsub1, ]
df[subsets$datsub2, ]
lapply(ldf, function(x){ someFunc(x) })
df试试这个:

ldf = split.data.frame(x = dat,f = dat$type) 
然后,您可以将函数应用于每个单独的
data.frame
,如下所示:

df <- data.frame(
    a = 1:10
    , b = letters[1:10]
)

subsets <- data.frame(
    datsub1 = df$b == "d"
    , datsub2 = df$a < 5
)

df[subsets$datsub1, ]
df[subsets$datsub2, ]
lapply(ldf, function(x){ someFunc(x) })
这有用吗

# create a dataframe
df <- data.frame(
    a = 1:10
    , b = letters[1:10]
)

# the function that subsets the dataframe and gives it a name
# and assigns it to the name you chose
run_subsets <- function(data, t, x) {
    assign(
        x
        , data[eval(substitute(t),data), ]
        , envir = .GlobalEnv
    )
}
#创建数据帧

df通常将结果分配给一个变量,例如
datsub1。您可以创建一个
数据框列表
,并命名
列表
中的每个元素,这基本上就是分别命名每个
数据框
。为此,您还必须随身携带
data.frame名称的向量。您正在使用哪些参数来子集data.frames?感谢您的快速响应。我需要的是函数中的一个参数,它在函数体中改变datsub本身。我的想法是,我有三个参数:一个用于data.frame(data),一个用于条件(t),一个用于在datsub1等(x)中更改datsub。这样我可以说,例如:我想选择一个具有这样一个条件的数据帧,并以这种方式命名它。那么,我如何才能为更改datasub本身创建一个参数呢?感谢您的快速响应。我需要的是函数中的一个参数,它在函数体中改变datsub本身。我的想法是,我有三个参数:一个用于data.frame(data),一个用于条件(t),一个用于在datsub1等(x)中更改datsub。这样我可以说,例如:我想选择一个具有这样一个条件的数据帧,并以这种方式命名它。那么,如何创建用于更改datasub本身的参数呢?
ldf = split.data.frame(x = dat,f = dat$type) 
lapply(ldf, function(x){ someFunc(x) })
# create a dataframe
df <- data.frame(
    a = 1:10
    , b = letters[1:10]
)

# the function that subsets the dataframe and gives it a name
# and assigns it to the name you chose
run_subsets <- function(data, t, x) {
    assign(
        x
        , data[eval(substitute(t),data), ]
        , envir = .GlobalEnv
    )
}