基于宏(和在宏内)将一个变量分配给另一个变量

时间:2014-10-13 08:21:54

标签: r

我正在使用RStudio 0.98.1062。 我想要做的是在宏中创建一个基于另一个变量的新变量(已经有我定义的后缀)在同一个数据帧中。数据框的名称和索引(后缀)是宏变量。 这是我的代码:

read_data <- defmacro(fileName, monthIndex, dfName,
                          expr = {
  dfName <- read.table(fileName, head=TRUE,sep = ",")
  #add suffix vor the variables for the corresponding month
  colnames(dfName) <- paste(colnames(dfName),monthIndex, sep = "_")
  #dfName["EasyClientMerge"]<-numeric()

  within(dfName, assign("EasyClientMerge",   paste("dfName$EasyClientNumber",monthIndex,sep="_"))

})

如果宏参数为(..., monthIndex=6, dfName= m201309),我希望创建以下变量 m201309$EasyClientMerge<-m201309$EasyClient_6

首先,在数据框中没有创建新变量,其次似乎是一个字符串被采用"m201309$EasyClient_6&#34;而不是参考dataframe&amp;变量名称

非常感谢,因为我有点卡住了!

1 个答案:

答案 0 :(得分:0)

如果你真的坚持在一个函数中生成硬编码data.frames(在我看来是一个糟糕的选择),你可以这样做。

> dfName <- "new.df"
> assign(dfName, value = list(clientMerge = 1:10, clientMerge2 = 1:10))
> as.data.frame(new.df)
   clientMerge clientMerge2
1            1            1
2            2            2
3            3            3
4            4            4
5            5            5
6            6            6
7            7            7
8            8            8
9            9            9
10          10           10