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