函数可使用不断变化的列表重命名R dataframe中的列

函数可使用不断变化的列表重命名R dataframe中的列,r,R,我经常准备我在工作中分享的统计汇总表。这些表通常包含相同类型的数据和列标题(例如,违反规章制度的数量、单位数量等)。我经常使用R数据帧中的速记列名(“nbbldg”、“nbunits”、“nbvl”)或从导入表继承的其他列名。下面是一个例子: df <- data.frame( DESCRIPTION_TXT_BLW = c( "Missing plumbing fixture", "Improperly installed heating unit",

我经常准备我在工作中分享的统计汇总表。这些表通常包含相同类型的数据和列标题(例如,违反规章制度的数量、单位数量等)。我经常使用R数据帧中的速记列名(“nbbldg”、“nbunits”、“nbvl”)或从导入表继承的其他列名。下面是一个例子:

df <-
  data.frame(
    DESCRIPTION_TXT_BLW = c(
      "Missing plumbing fixture",
      "Improperly installed heating unit",
      "Loose or damaged siding",
      "Peeling paint"
    ),
    DESCR_UNIT = c("Apartment", "Apartment", "Common area", "Common area"),
    nbvl = as.integer(c(12, 4, 76, 4))
  )

df我要做的是有一个包含此名称列表的中心R文件,然后
source
将其加载到每个项目中

如果您希望将名称对保存在
.csv
文件中,则此R文件可以从单个文件生成名称列表,而不是保存它本身:

name\u pairs.csv:

short_name,full_name
DESCR_UNIT,Description of unit
DESCRIPTION_TXT_BLW,Description of bylaw violation
nbvl,Number of bylaw violations
name_pairs <- read.table('~/Desktop/test/name_pairs.csv', sep = ',',
                         header = TRUE, stringsAsFactors = FALSE)

readablecolnames <- name_pairs$full_name
names(readablecolnames) <- name_pairs$short_name
rm(name_pairs)
source('~/Desktop/test/load_name_pairs.r')
readablecolnames


           DESCR_UNIT              DESCRIPTION_TXT_BLW                             nbvl 
"Description of unit" "Description of bylaw violation"     "Number of bylaw violations" 
加载\u名称\u对。R:

short_name,full_name
DESCR_UNIT,Description of unit
DESCRIPTION_TXT_BLW,Description of bylaw violation
nbvl,Number of bylaw violations
name_pairs <- read.table('~/Desktop/test/name_pairs.csv', sep = ',',
                         header = TRUE, stringsAsFactors = FALSE)

readablecolnames <- name_pairs$full_name
names(readablecolnames) <- name_pairs$short_name
rm(name_pairs)
source('~/Desktop/test/load_name_pairs.r')
readablecolnames


           DESCR_UNIT              DESCRIPTION_TXT_BLW                             nbvl 
"Description of unit" "Description of bylaw violation"     "Number of bylaw violations" 

如您所见,通过在
load\u name\u pairs.r
上使用
source
,运行
sourceed
文件中的所有代码,并将对象移植到
sourceing
环境中。因此,只要项目文件中有一行,您就可以加载和解析一个中心
.csv
文件,并访问项目中的结果。

您可以有一个中心R文件,其中包含每个项目中的名称列表和
源代码。为了在我扩展“库”时更容易输入速记/可读名称对,我的源文件是否可以是一个csv,然后转换成一个命名列表?谢谢,效果很好。为了方便起见,我可以在changecolnames(在我的问题中)函数中插入“源”代码吗?是的,应该可以。如果使用默认的
local=FALSE
参数运行
source
,则源对象将加载到全局环境中,因此从函数调用它并不重要。我将代码
源('~/Desktop/test/load_name_pairs.r')
添加到.Rprofile文件()中,在启动RStudio时自动加载名称对表。