Я предваряю это, сказав, что знаю, что это немного странный вопрос, но я не знаю, как еще это выразить.R- Используйте строку как выражение
У меня есть следующие строки в частности R сценария:
hist(sce$total_counts/1e6, xlab="Library sizes (millions)", main="",
breaks=20, col="grey80", ylab="Number of cells");
Для этого бита:
sce$total_counts/1e6
1e6
часть должна быть пользовательский ввод, и я пытаюсь настроить его так, что первая часть и пользовательская часть получают «конкатенированные», а затем оцениваются. Проблема заключается в использовании пасты, а другие вещи возвращают строки, и мне не нужны строки. Я хочу, чтобы иметь возможность заменить часть «/ 1e6» на «/ 1e3», например, и ничего не менять в этой строке кода и все еще работать. Я попытался сделать следующее:
object <- paste("sce$total_counts", args[1], sep="")
ob <- parse(text=object) # expression(sce$total_counts/1e6)
hist(ob, xlab="Library sizes (millions)", main="",
breaks=20, col="grey80", ylab="Number of cells");
Но он вернулся эту ошибку:
Error in hist.default(ob, xlab = "Library sizes (millions)", main = "", :
'x' must be numeric
Я не знаю, как еще это слово, кроме как сказать: Как вам псевдоним одной части код как что-то еще? Я хочу ob
с пользовательским вводом «/ 1E6» означает тот же самое, как sce$total_counts/1e6
Нет необходимости в этом вскрытии и т. Д. Просто выполните 'x <- 1: 100; val <- 1e6; hist (x/val) '- вы можете изменить' val' на любой знаменатель, который вы хотите. – thelatemail
Попробуйте 'eval (parse (text = object))' –
@DominicComtois - Чтобы процитировать 'fortunes :: fortune (106)' "* Если ответ является parse(), вы должны, как правило, переосмыслить вопрос. *" – thelatemail