r - 将 eval(parse()) 与多元素向量一起使用
问题描述
我正在尝试从字符向量中 eval(parse()) 变量名,但 eval() 仅返回最后一个变量的内容: 我的代码:
c <- c(1,1)
a <- c(1,0)
t <- c(0,1)
g <- c(0,0)
sequence <- c("a", "t", "g", "t", "g", "t", "a", "c")
eval(parse(text=sequence))
它应该返回:
[1] 1 0 0 1 0 0 0 1 0 0 0 1 1 0 1 1
但它只是返回对应向量的最后一个元素:“c”
[1] 1 1
解决方案
我们可以使用来获取 a 中的mget
所有对象值list
,然后创建一个unlist
list
vector
unlist(mget(sequence), use.names = FALSE)
#[1] 1 0 0 1 0 0 0 1 0 0 0 1 1 0 1 1
使用eval(parse
时,它需要length
1。我们可以遍历sequence
并执行eval
(不推荐)
c(sapply(sequence, function(x) eval(parse(text = x))))
#[1] 1 0 0 1 0 0 0 1 0 0 0 1 1 0 1 1
推荐阅读
- java - 删除/忽略当前事务并使用即将到来的事务(如果可用)
- postgresql - PostgreSQL 的外部数据包装器,哪个是实现数据库分片更有效的方法?或多个不相关的 Postgres 实例?
- c# - 如何通过 MonoBehaviour 制作静态类派生
- c# - c# Mutex 死锁
- android - Android 应用程序:使用旧 API 构建时找不到资源
- wso2 - WSO2 - 在另一个项目中使用一个项目的序列
- python - 提取特定用户的 Twitter 关注者
- c - C 将 fprintf 重定向到缓冲区或字符数组
- android - 相机正在打开,但有时它会在 android 某些设备(如 Redmi 7)上单击图像确定按钮时崩溃
- objective-c - Objective-C 中的 SPM Bundle.module 等效项是什么