Спасибо, что поделились Кеном.
Вы можете использовать:
x <- myDataFrame$MyVariableName; x[x > 100 & x < 180]
Для вашего может потребоваться меньше ввода, но код будет менее обобщаемым для других, если вы поделитесь кодом. У меня есть несколько таких функций для экономии времени, но я использую их экономно, потому что они могут замедлять ваш код (дополнительные шаги) и требуют, чтобы вы также включали этот код для этой функции, когда вы делитесь файлом с кем-то еще.
Сравните длину письма. Почти одинаковой длины:
ss(mtcars$hp, 100 < . & . < 180)
x <- mtcars$hp; x[x > 100 & x < 180]
Сравните время на 1000 повторений.
library(rbenchmark)
benchmark(
tyler = x[x > 100 & x < 180],
ken = ss(mtcars$hp, 100 <. & . < 180),
replications=1000)
test replications elapsed relative user.self sys.self user.child sys.child
2 ken 1000 0.56 18.66667 0.36 0.03 NA NA
1 tyler 1000 0.03 1.00000 0.03 0.00 NA NA
Так что я думаю, это зависит от того, нужна ли вам скорость и/или совместное использование или удобство. Если это только для вас на небольшом наборе данных, я бы сказал, что это ценно.
РЕДАКТИРОВАНИЕ: НОВЫЙ СРАВНИТЕЛЬНЫЙ МАРКЕТИНГ
> benchmark(
+ tyler = {x <- mtcars$hp; x[x > 100 & x < 180]},
+ ken = ss(mtcars$hp, 100 <. & . < 180),
+ ken2 = ss2(mtcars$hp, 100 <. & . < 180),
+ joran = with(mtcars,hp[hp>100 & hp< 180 ]),
+ replications=10000)
test replications elapsed relative user.self sys.self user.child sys.child
4 joran 10000 0.83 2.677419 0.69 0.00 NA NA
2 ken 10000 3.79 12.225806 3.45 0.02 NA NA
3 ken2 10000 0.67 2.161290 0.35 0.00 NA NA
1 tyler 10000 0.31 1.000000 0.20 0.00 NA NA
person
Tyler Rinker
schedule
19.01.2012
data.frame(.=x)
наlist(.=x)
, и я подозреваю, что производительность улучшится. - person IRTFM   schedule 20.01.2012myDataFrame$MyVariableName
в качестве примера очень длинного имени вектора. Вероятно, мне следовало использоватьmyVeryVeryVeryLongVariableName
или что-то в этом роде, но если я отредактирую это сейчас, ответ @joran не будет иметь особого смысла. знак равно - person Ken Williams   schedule 20.01.2012