以参数作为列名生成数据框并根据参数选择列
Generating dataframe with argument as column name & Selecting column based on argument
我在争论中遇到了一些挑战。有人可以帮助我吗?非常感谢!
argument_a <- “GID”
- 如何使用参数定义的列名创建一个空数据框。下面的这个例子显然行不通,但可以帮助你理解我想要实现的目标。我希望 df 的列名是“GID”:
df <- data.frame( argument_a = character())
- 如何 select 基于列值的参数。下面的这个例子显然行不通,但可以帮助你理解我想要实现的目标。我希望遍历 GID_a、GID_b 和 GID_c
df <- data.frame(GID = c('GID_a','GID_b','GID_c'))
for (i in list(unique(df$argument_a))){}
对于你问题的第一部分,我会进行一些非标准的评估。基本上,您想要评估 argument_a 然后创建数据框(这样列就不会获得变量的名称,如 argument_a)。我无法让它与 base data.frame 一起使用,但它可以与 tibble:
一起使用
library(rlang)
library(tibble)
argument_a <- "GID"
df <- tibble(!!argument_a := character())
!! ("bang-bang") 在这里评估 argument_a,因此该列被命名为 argument_a ("GID") 的值。在它后面需要这个运算符 :=,称为 Walrus 运算符,因为您正在评估赋值的左侧。
对于第 2 部分,我将使用括号而不是 $ 来索引。
df <- data.frame(GID = c('GID_a','GID_b','GID_c'))
for (i in list(unique(df[[argument_a]]))){
print(i)
}
Advanced R metaprogramming section 中对这些概念进行了非常有用的概述。
我在争论中遇到了一些挑战。有人可以帮助我吗?非常感谢!
argument_a <- “GID”
- 如何使用参数定义的列名创建一个空数据框。下面的这个例子显然行不通,但可以帮助你理解我想要实现的目标。我希望 df 的列名是“GID”:
df <- data.frame( argument_a = character())
- 如何 select 基于列值的参数。下面的这个例子显然行不通,但可以帮助你理解我想要实现的目标。我希望遍历 GID_a、GID_b 和 GID_c
df <- data.frame(GID = c('GID_a','GID_b','GID_c'))
for (i in list(unique(df$argument_a))){}
对于你问题的第一部分,我会进行一些非标准的评估。基本上,您想要评估 argument_a 然后创建数据框(这样列就不会获得变量的名称,如 argument_a)。我无法让它与 base data.frame 一起使用,但它可以与 tibble:
一起使用library(rlang)
library(tibble)
argument_a <- "GID"
df <- tibble(!!argument_a := character())
!! ("bang-bang") 在这里评估 argument_a,因此该列被命名为 argument_a ("GID") 的值。在它后面需要这个运算符 :=,称为 Walrus 运算符,因为您正在评估赋值的左侧。
对于第 2 部分,我将使用括号而不是 $ 来索引。
df <- data.frame(GID = c('GID_a','GID_b','GID_c'))
for (i in list(unique(df[[argument_a]]))){
print(i)
}
Advanced R metaprogramming section 中对这些概念进行了非常有用的概述。