2017-06-02 49 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