У меня есть решение, очень похожее на решение Питера, но оно касается числа и случая объекта.
if (!String.prototype.format) {
String.prototype.format = function() {
var args;
args = arguments;
if (args.length === 1 && args[0] !== null && typeof args[0] === 'object') {
args = args[0];
}
return this.replace(/{([^}]*)}/g, function(match, key) {
return (typeof args[key] !== "undefined" ? args[key] : match);
});
};
}
Может быть, было бы еще лучше иметь дело со всеми случаями глубины, но для моих нужд это просто хорошо.
"This is an example from {name}".format({name:"Blaine"});
"This is an example from {0}".format("Blaine");
PS: эта функция очень полезна, если вы используете переводы в шаблонах, таких как AngularJS :
{{('hello-message'|translate).format(user)}}
{{('hello-by-name'|translate).format( user ? user.name : 'You' )}}
, где en.json что-то вроде
{
"hello-message": "Hello {name}, welcome.",
"hello-by-name": "Hello {0}, welcome."
}
Используйте подмножество в сочетании с регулярными выражениями:
subset(your_data, regexpr("foo", your_data$your_column_to_match) > 0))
Если вы просто заботитесь о наборе данных с одним столбцом, я думаю, вам не нужно указывать имя столбца ...
Филипп