Я пытаюсь изучить R и не могу понять, когда использовать с соответствующим образом. Я думал об этом примере:С против lapply - почему это не работает здесь?
Цель состоит в том, чтобы преобразовать «dstr» и «умер» во всем «штрихе» данных (в базе данных ISwR) в формат даты несколькими способами (только для практики). Я сумел сделать это следующим образом:
#applying a function to the whole data frame - use the fact that data frames are lists actually
rawstroke=read.csv2(system.file("rawdata","stroke.csv",package="ISwR"),na.strings=".")
names(rawstroke)=tolower(names(rawstroke))
ix=c("dstr","died")
rawstroke[ix]=lapply(rawstroke[ix],as.Date,format="%d.%m.%Y")
head(rawstroke)
Однако, когда я пытаюсь использования с функцией он не дает кадр данных в качестве вывода, но пишет только определение функции myfun. Вот код, который я пробовал.
myfun=function(x)
{y=as.Date(x,format="%d.%m.%Y")
return(y)}
rawstroke=read.csv2(system.file("rawdata","stroke.csv",package="ISwR"),na.strings=".")
names(rawstroke)=tolower(names(rawstroke))
ix=c("dstr","died")
bla=with(rawstroke[ix],myfun)
head(bla)
Если кто-то может помочь мне в этом, было бы здорово.
Вы, кажется, думаете, что 'с()' как-то перебирает переменные окружения, которые он не делает. Он даже не близок к тому, что называется 'lapply()'. Посмотрите на источник 'with.default' в консоли. Это просто простой и чистый способ доступа к среде. –