2017-02-08 6 views
3

[Работа с R 3.2.2]Изменение значения переменной в пределах кадра данных

Я пытаюсь изменить значения нескольких переменных, включенных в кадр данных, используя петлю. В частности, я хочу, чтобы разделить все значения 11 переменных 10.

Во-первых, я пытался сделать это для одной переменной (bio1):

dataframe0$bio1/10 

Эта команда показывает результат я хочу получить в консоль, но она не изменяет ее в фрейме данных.

При попытке построить петлю, я пришел с какой-то вариант:

Во-первых, я создал вектор со всеми переменными, а затем я построил цикл:

vlist <- c("bio1", "bio2", "bio3", "bio4", "bio5", "bio6", "bio7", "bio8", "bio9", "bio10", "bio11") 
for (i in vlist) { 
    dataframe0$i/10 
} 

Так как предыдущий код вероятно, подставляя ' «..» ", а также строку внутри цикла ('i') и, как следствие, она не работает, я пытался с этим другим контуром:

for(var in paste0("bio", 1:11)) { 
    dataframe0$var/10 
} 

Что должен ли я выполнить его и сохранить изменения в кадре данных? Заранее спасибо!

+0

Это поможет, если вы могли бы точнее, какой язык программирования и какие рамки/библиотеки, которые вы используете. Добавьте его в раздел тега, чтобы люди, заинтересованные в них, могли легко найти ответ и ответить на него. – JeromeFr

+1

@JeromeFr Спасибо! У меня нет библиотек, связанных с этим кодом ... – Marina

+0

попробуйте применить (dataframe0,2, function (x) x/10) или применить (dataframe0 [, который (grepl («bio», names (datafram0)))], 2, функция (x) x/10) – Niek

ответ

1

Самым простым решением, вероятно, будет

dataframe0[,vlist] <- dataframe0[,vlist]/10 

петля не будет необходимости для этого.

Пример (используя некоторые из моих собственных данных для удобства):

> head(websurvey[,c("age", "dur")]) 
     age dur 
17514 68 320 
15091 70 503 
18152 30 276 
7558 39 311 
22594 47 161 
5108 56 284 

> websurvey_test[,c("age", "dur")] <- websurvey[,c("age", "dur")]/10 

> head(websurvey_test[,c("age", "dur")]) 
     age dur 
17514 6.8 32.0 
15091 7.0 50.3 
18152 3.0 27.6 
7558 3.9 31.1 
22594 4.7 16.1 
5108 5.6 28.4