2016-02-10 27 views
0

我想不出如何使用mutate來根據列的子集進行線性插值。我可以使用約功能在for循環中,並得到什麼我要找的,但我得到的錯誤Error in xy.coords(x, y) : (list) object cannot be coerced to type 'double'.使用mutate基於數據框中列的子集進行插值

df <- data.frame(Jan = rep(0,10), Feb = 1:10, Mar = 2*(1:10), Apr = 3*(1:10), val=c(3,6,2,12,4,8,3,5,22,14)) 
x <- c(31,60,91,121) 

以下循環工作原理:

for(i in 1:dim(df)[1]) 
{ 
    df$m[i] <- approx(cbind(0, df[i,1:4]), x, df$val[i])[2] 
} 

我想以達到與變異相同的結果

s<-mutate(df, m=approx(cbind(0, df[,1:4]), x, val)[2]) 

但上面的代碼行給我的錯誤信息。任何幫助解釋我要去哪裏錯了?

+1

for循環示例引發一個錯誤:'錯誤xy.coords(X,Y): 'x' 和 'y' 的長度不同' –

回答

0

可以使用rowwise到每行上執行內插

df %>% 
    rowwise() %>% 
    mutate(m = approx(c(Jan, Feb, Mar, Apr), x, val)[[2]]) 
相關問題