2012-05-24 2 views
1

Я пишу макрос, который выполняют следующие функциональные возможностиПреобразование макроса

  1. взять файл сказать первенствует или CSV
  2. читать все метки
  3. динамически генерировать квадрат, квадратный корень, журнал каждого столбца с соответствующее имя столбца и записать его в новый файл,

Я застрял в динамически genrateing имена столбцов, как Revenue_square и т.д.

Примера "У меня есть первенствует с доходом 3 столбцов, стоимость & прибыль

Теперь мой макрос должен быть в состоянии прочитать значения и для каждого столбца и выполнить квадрат, квадратный корень и журнал доходов, стоимость & прибыли и писать, чтобы преуспеть с именами столбцов как Revenue_square, Revenue_squareroot, Revenue_log cost_square и т.д ...

Ниже мой код

test$Rev_square = test[c(1)]^2 
data=read.delim2("//ARLMSAN01/CTRX_Data/vikasK.sharma/Desktop/balancesheet_example.csv",header=T,sep=",") 

headings = names(data) 
show (headings) 
HEADINGS = toupper(headings) 

for (i in 1:length(HEADINGS)) { 
    show(i) 
    data$Rev_square=data[c(i)]^2 
    show(data$Rev_square) 
    names(data) 
} 
+0

Проверьте пакет 'XLConnect' для работы с листами Excel. Это дает вам невероятную гибкость для добавления столбцов и подобных. –

ответ

1

Вы можете использовать либо paste (или paste0) или sprintf, чтобы создать новые имена столбцов, затем используйте [[, а не $, чтобы выполнить задание. Также лучше использовать seq_along, а не 1:length в инструкции цикла.

for(i in names(mydata)) { 
    newname <- paste0(i,"_squared") 
    mydata[[newname]] <- mydata[[i]]^2 
}