【问题标题】:Using Character as Naming Convention in R在 R 中使用字符作为命名约定
【发布时间】:2017-12-22 19:27:13
【问题描述】:

我正在分析一个数据集,并创建了一个函数来总结我的大部分列。我的脚本的目标是自动创建和提取汇总表(或多或少的数据框)。

为了尽可能概括,我想将一个字符串传递给我的函数,用于命名列、行、文件等。

我目前的工作:

NameFun <- function(df, name) {

##Name the first column
colnames(df)[1] <- "name"  

##Write DF to Excel Workbook
write.xlsx(df, "Workbook.xlsx", sheetName = "name", 
           col.names = TRUE, row.names = TRUE, append = TRUE)

}

这里的目标是输入一个字符“名称”并在函数中使用它。我试过“eval”、“assign”和“get”,但都没有成功。我尝试了其他一些尝试,但要么 R 在环境中无法识别它,要么什么都不做,要么拒绝一起传递一个字符的想法。

我愿意接受任何其他解决方案,以帮助进一步概括我的脚本。每列都有一个唯一的名称,但报告的列数和指标类型相同。理想情况下,我可以将每列的列表传递给函数并循环遍历整个数据集。

谢谢!

-J

【问题讨论】:

  • 不要在函数体内引用name,因为它是一个参数——引用它会导致它被解释为字符串"name",而不是变量name跨度>
  • 不要使用"name",而是使用name,因为这是一个变量
  • 不幸的是,这并不能解决问题。取出引号并将变量传递给函数不会产生任何结果;该功能不做任何事情。向传递的变量添加引号会引发此错误:
  • colnames(df)[1] 中的错误

标签: r


【解决方案1】:

你可能会这样做:

#Initialize a list to hold your results
ll<-list()

# You can run a loop or run it multiple times to generate your summary
ll[[name]]<-summary_Method(...) # Or pass the df
NameFun<-function(name, ll, df){
  ll[[name]]<-df
}

# Write the list of dataframe to excel file.
lapply(names(ll), function(x) write.xlsx(ll[[x]], 'Workbook.xlsx', sheetName=x, append=TRUE))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-09-12
    • 2018-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-22
    • 2015-07-28
    相关资源
    最近更新 更多