Ну, конечно, есть много решений вашей проблемы. Но так как вы специально запросили цикл и предоставили свою собственную функцию, я постарался придерживаться того, что вы сделали, насколько это возможно. Однако у вас есть две growth
-колонки, поэтому я взял growth.y
.
datf <- read.table(text="
station_id timestamp growth.x growth.y color
DB1 1/14/01 59.916 59.9164 black
DB1 1/14/02 316.128 316.128 black
DB1 1/14/03 12.456 12.456 black
DB1 1/14/04 537.443 537.443 black",
header = TRUE, stringsAsFactors = FALSE)
#I had to change your function a little:
check_it <- function(x, dat)
if(dat[x, "growth.y"] >500){
return("green")
} else if(dat[x, "growth.y"] < 0) {
return("red")
} else {
return("blue")
}
Теперь ваша переменная цикла x соответствует индексу строки в data.frame
, и вы просматриваете его. До этого это был не тот случай, когда вы просто передавали число в свою функцию.
#And finally the loop
for(x in 1:nrow(datf)){
datf[x, "color"] <- check_it(x, datf)
}
> datf
station_id timestamp growth.x growth.y color
1 DB1 1/14/01 59.916 59.9164 blue
2 DB1 1/14/02 316.128 316.1280 blue
3 DB1 1/14/03 12.456 12.4560 blue
4 DB1 1/14/04 537.443 537.4430 green
Однако вы должны рассмотреть вопрос о семействе * apply-function.
Да, вы можете писать, http://www.otierney.net/objective-c.html#settingup http://www.faqs.org/faqs/computer-lang/Objective-C/faq/
Википедия говорит
Сегодня он используется в основном на устройствах Apple Mac OS X и iPhone OS, два среды, основанные, хотя и не совместим со стандартом OpenStep, и это основной используемый язык для Apple Cocoa API, хотя это было изначально использовался как основной язык на ОС NeXTSTEP от NeXT. общий Программы на Objective-C, которые не делают использование этих библиотек также может быть скомпилирован для любой системы, поддерживаемой gcc, который включает Objective-C компилятор.
Objective-C сегодня часто используется в тандем с фиксированной библиотекой стандартные объекты (часто называемые «комплект» или «каркас»), например какао или GNUstep.
Может быть, вам стоит приобрести виртуальную машину Linux, если вы в основном работаете с Windows и у вас работает GNUStep .
Есть разница между языком Objective-C и фреймворками, которые Apple построила поверх него. Эти фреймворки состоят из набора объектов, которые вы можете использовать в своем коде и особенно полезны, если вы ориентируетесь на Mac или iPhone. В GNUStep есть некоторые похожие объекты для его частей, но это не полная замена библиотеки Cocoa / etc и особенно не касается ничего, что связано с iPhone.
GNUStep и язык Objective-C (через gcc) доступны для многих платформ, и вы можете писать свои собственные программы, использующие объекты Objective-C и взаимодействующие с любым API C из Objective-C.
Objective-C - это надмножество C, поэтому на самом деле не более снисходительно, чем C, но, возможно, более снисходительно, чем C ++ (почти надмножество C). Вы также можете смешивать Objective-C и C ++ с GCC, но это становится немного сложнее, особенно в отношении обработки исключений.
Однако для начала и поиграться с языком, GNUStep и GCC были бы хорошим вариантом.
Apple внесла изменения в цель c обратно в gcc (не то чтобы у них был большой выбор, поскольку у них была GPL). Так что везде, где вы можете настроить gcc, вы можете установить компилятор objective-c.
Кроме того, среда Gnustep может дать вам немного вкуса исходной среды OpenStep / NextStep.
1126538]
Я не вижу веских причин, почему вы не можете использовать Objective C для собственных расширений Ruby, за исключением того, что вы не получите особой выгоды. Вам все равно придется использовать вызовы Api нижнего уровня C, поскольку, насколько я знаю, нет никаких привязок ruby к objective-c. Кроме того, Objective C поставляется с довольно обширной библиотекой служебных классов, которые, хотя и полезны, нелегко оправдать их размер и вес в контексте расширения ruby.
Вы можете использовать эту страницу для простых экспериментов с ObjC: http://www.codesign.cz/LearnObjC/