我正在嘗試編寫一個函數,當我調用它時,它將向數據框中添加一個新列,而不進行任何明確的賦值。 即我只是想調用帶參數的功能,並把它修改數據幀:從R中的函數內修改全局數據
input_data:
x y
1 2
2 6
column_creator<-function(data,column_name,...){
data$column_name <- newdata ...}
column_creator(input_data,new_col,...)
x y new_col
1 2 5
2 6 9
至於反對:
input_data$new_col <- column_creator(input_data,new_col,...)
但是這樣做在函數內部分配不修改全局變量。
我正在通過讓函數返回一個賦值語句(下面的函數中的temp)來解決這個問題,但是有沒有另外一種方法來做到這一點?
這裏是我的函數供參考,它應該在名稱爲dummy_name的情況下在提供的開始日期和結束日期之間創建一個1的列。
dummy_creator<-function(data,date,dummy_name,start,end){
temp<-paste(data,"['",dummy_name,"'] <- ifelse(",data,"['",date,"'] > as.Date (","'" , start,"'" , ", format= '%Y-%m-%d') & ",data,"['",date,"'] < as.Date(", "'", end,"'" ,",format='%Y-%m-%d') ,1,0)",sep="")
print(temp)
return()
}
感謝
我也試過:
dummy_creator<-function(data,date,dummy_name,start,end){
data[dummy_name] <<- ifelse(data[,date] > as.Date (start, format= "%Y-%m-%d") & data[,date] < as.Date(end,format="%Y-%m-%d") ,1,0)
}
但是,嘗試給了我錯誤object of type closure is not subsettable
。
你可以用超賦值運算符'<<嘗試 - '。 – RHertel
@RHertel沒有沒有工作,它給了我類型閉包的錯誤對象不是子集表單,當不存在東西時就會出現。 – user124123