在R中工作时参考同一张表

时间:2019-03-19 06:58:53

标签: r dataframe dplyr

我目前正在处理一个需要在许多列中进行一些更改的数据框。 我的代码与此类似:

Table_A$Field_A <- "10"
Table_A$Field_B <- "20"
Table_A$Field_C <- "30"
Table_A$Field_D <- "20"
Table_A$Field_E <- "20"

可以看出它是重复的。我认为应该有一个函数或包,可以避免每次在同一数据帧中的不同列上输入Table_A$Field_X

我尝试搜索,但无法提供正确的关键字来获取解决方案。所有的答案表示赞赏。谢谢。

1 个答案:

答案 0 :(得分:1)

使用外部软件包之前,请先查看base::within函数。该函数允许您将数据帧指定为data参数,并使用带有表达式的expr参数对变量进行修改。

TableA <-
    as.data.frame(sapply(
        X = paste("Field", LETTERS[1:5], sep = "_"),
        FUN = function(x) {
            3
        }, simplify = FALSE
    ))

within(data = TableA,
       expr = {
           Field_A = 1e3
           Field_B = -10
       }) -> TableA

评论注释

请注意,transform的语法是不同的。要使用transform实现所提供的解决方案,您可以执行以下操作:

transform(TableA,
          Field_A = 1e3,
          Field_B = -10) -> Table_res_transform

这等效于:

within(data = TableA,
       expr = {
           Field_A = 1e3
           Field_B = -10
       }) -> Table_res_within

identical(Table_res_transform, Table_res_within)
# [1] TRUE

dplyr

require(dplyr)
TableA %>%
    mutate(Field_A = 1e3,
           Field_B = -10)