r - R 函数 bquote() 的元素数量与 expression() 不同
问题描述
假设我有一个这样的字符向量
vec <- c("a","b","c","d")
我想用表达式改变向量的第一个元素
num <- 3
vec[1] <- expression(num^4)
但是,如果我尝试x[1]
在情节中使用标签
plot(x=1, xlab = vec[1])
我得到以下标签: 情节
有什么方法可以让标签读取 3 4?我做了一些研究,发现有些人建议使用该bquote()
功能。但是当我尝试这个
num <- 3
vec[1] <- bquote(.(num)^4)
我收到错误消息
要替换的项目数不是替换长度的倍数
有没有办法让它bquote(.(num)^4)
返回一个元素,就像函数一样expression()
?或者是否有任何其他我可以使用的函数相当于expression()
,但可以读取变量?
提前致谢!
解决方案
您不能在向量中混合字符和表达式。请注意,您的第一段代码将所有代码都转换vec
为表达式容器。观察
vec <- c("a","b","c","d")
class(vec)
# [1] "character"
vec[1] <- expression(num^4)
class(vec)
# [1] "expression"
vec
# expression(num^4, "b", "c", "d")
当您尝试执行不兼容的分配时,它会被强制转换为表达式容器对象。
使用表达式容器和列表一样,您需要使用双括号[[ ]]
来设置值。你可以做
vec <- as.expression(c("a","b","c","d"))
num <- 3
vec[[1]] <- bquote(.(num)^4)
vec
# expression(3^4, "b", "c", "d")
推荐阅读
- javascript - 如何更改代码来控制某些按钮的名称?
- reactjs - 使用 react-native 从父调用子方法
- python - 我如何从 tkinter 输入框将整数值保存到 sql 数据库中
- python - Markdown 解析/预处理器 - 支持增强/修改任意 Markdown 文件
- reactjs - 如何将 React 中的 useState() 绑定到动态生成元素?
- jquery - 查找每个具有 attr 类型但没有元素类型的元素
- outlook-addin - System.EntryPointNotFoundException:'无法找到名为'的入口点?' 在 DLL 'mip_dotnet' 中。在 Outlook VSTO 加载项中的 CreateMipContext 上?
- swiftui - SwiftUi - 隐藏“返回”按钮和导航栏(出现几分之一秒)
- python - 如何按列内容过滤数据?
- c - PARSEC x264 基准测试中的奇怪行为