【问题标题】:Defining subsets of data frame using loop使用循环定义数据帧的子集
【发布时间】:2020-07-22 09:13:57
【问题描述】:

我有以下问题:假设我有一个包含三列的数据框,例如

X=data.frame(rnorm(100),rexp(100),runif(100)) 

现在我想将 data.frames Q1、Q2 和 Q3 定义为

Q1=X[,1][2:100], 

Q2=X[,2][2:100] and 

Q3=X[,3][2:100] 

通过使用循环。你有什么想法/提示我该怎么做?

【问题讨论】:

  • 你的意思是lapply(X, function(x) data.frame(a = x[2:100])) 吗?
  • 但是如何定义三个新变量?

标签: r


【解决方案1】:

我不确定下面的代码是不是你想要的

list2env(setNames(X[-1,],paste0("Q",seq_along(X))),envir = .GlobalEnv)

然后您将在您的全局环境中看到Q1Q2Q3

【讨论】:

  • 正是我想要的 ;))
【解决方案2】:

您可以尝试在每一列上拆分数据框,这将创建一个包含 3 个数据框的列表,每个数据框由一列 X 组成。然后您可以设置列表的名称,即

setNames(split.default(X, names(X)), paste0('Q', seq(ncol(X))))

最好将它们保留在列表中,但如果您想将它们放在全局环境中,那么您可以这样做,

list2env(setNames(split.default(X, names(X)), paste0('Q', seq(ncol(X)))), envir = .GlobalEnv)

上面将创建三个名为Q1Q2Q3的数据框,因为我们传递给它的列表就是用这些名称命名的

【讨论】:

    猜你喜欢
    • 2013-11-21
    • 1970-01-01
    • 2020-04-03
    • 1970-01-01
    • 2021-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多