2014-09-19 2 views
0

Я следующий кадр данных:Почему data.frame столбец не меняется в R

ddf 
    vnum1  vnum2 
1  1 0.6380312 
2  1 0.1737218 
3  1 0.3528707 
4  1 0.8670922 
5  1 0.6498109 
> 
> 
> str(ddf) 
'data.frame': 5 obs. of 2 variables: 
$ vnum1: num 1 1 1 1 1 
$ vnum2: num 0.638 0.174 0.353 0.867 0.65 
> 

Я хочу изменить все значения vnum1 от 1 до 4.

Почему следующие не работают:

> rbind(ddf, ddf[,1]=4) 
Error: unexpected '=' in "rbind(ddf, ddf[,1]=" 

После этого добавляется только одно число и это тоже для обеих столбцов. Очевидно, что он работает неправильно.

> rbind(ddf, (ddf[,1]=4)) 
    vnum1  vnum2 
1  1 0.6380312 
2  1 0.1737218 
3  1 0.3528707 
4  1 0.8670922 
5  1 0.6498109 
6  4 4.0000000 

ответ

3

Здесь есть две проблемы.

  1. код не работает, потому что =, как вы используете его в списке аргументов функции неверна. В rbind, = используется для назначения имен аргументам.

    Чтобы убедиться в этом, попробуйте rbind(ddf, ddf[,1] <- 4) против rbind(ddf, ddf[,1]=4)

    Также попробуйте rbind(ddf, X = 3) и посмотрите на имена строк.

  2. rbind является строка привязка функция. Поэтому, когда вы вызываете rbind(ddf, ddf[,1]=4), вы пытаетесь добавить новую строку, заполненную цифрой 4, в нижней части ddf.


Тем не менее, заменить все значения в первом столбце с 4, вы можете просто использовать ddf[,1]=4, как у вас есть в вашем rbind вызова, или вы можете также сделать

ddf$vnum1 <- 4L 
+1

Надеюсь, что это верно для вас :-) – A5C1D2H2I1M1N2O1R2T1

+0

Да, это работает, но это означает, что и изменение чисел, и rbind не могут быть в одном выражении. – rnso

+0

Почему вы спрашиваете о 'rbind'? Я объяснил 'rbind', и ваш вопрос только спрашивает, как изменить значения в первом столбце на 4? –

Смежные вопросы