2017-06-02 48 views
0

一個專欄中,我有一個數據幀:更新中的R

df = data.frame(matrix(rnorm(5), nrow=5)) 

要我加一個離散變量

df$discrete <- c(0,1,0,1,0) 

,我把一些有意義的colnames:

colnames (df) <- c("start", "discrete") 

現在我想創建一個新的變量,這是第一個變量+ 10 - 但只有當我的離散變量的值爲1

df$new_var <- as.numeric(10) 

df$new_var[df$discrete == 1] <- df$start + 10 

,我得到一個錯誤:警告消息:在DF $ new_var [DF $離散== 1] < - DF $啓動+ 10:項替換的數目不替換長度的倍數

和我的表沒有按預期更新。這是怎麼回事?

df = data.frame(matrix(rnorm(5), nrow=5)) 
df$discrete <- c(0,1,0,1,0) 
colnames (df) <- c("start", "discrete") 
df$new_var <- as.numeric(10) 
df$new_var[df$discrete == 1] <- df$start + 10 

回答

1

你試圖分配一個數據框柱(df$new_var[df$discrete == 1])在整個數據框列中的數據(改變的位)的一個子集:df$start + 10

試試這個,這子集雙方。

df$new_var[df$discrete == 1] <- df$start[df$discrete == 1] + 10