【发布时间】:2017-09-03 02:48:25
【问题描述】:
我有两个从 API 获取的列表。我需要比较 R 中的两个列表以确定两个列表中都存在哪些项目。我曾希望使用 intersect() 命令执行此操作,但它不起作用。经过进一步检查,我注意到每个列表实际上是一个包含多个项目的向量,这些项目由逗号和转义字符分隔。是否可以将这些向量转换为多项目列表,以便我可以比较列表?下面是一些示例代码:
我想要什么:
> intersect(x,y)
[[1]]
[1] "c"
我看到的是:
> intersect(x,y)
list()
> as.character(x)
c(\"a\", \"b\", \"c\")
> as.character(x)
c(\"c\", \"d\", \"e\")
这里发生了什么?如何比较 x 和 y?有没有办法将这些向量转换为列表,以便我可以使用 intersect() 命令?
编辑:改进的示例和澄清的数据源
【问题讨论】:
-
你会显示
dput(x)和str(x)的输出吗?我只是好奇x是否真的是一个字符向量,或者as.character是否将其强制转换为字符。 -
我无法复制您的错误。列表版本基于此代码运行良好。尽管正如 Ryan Runge 在答案中指出的那样,您应该使用
c()而不是list() -
这真的是
as.character的确切输出吗?通常它会以[1]开头并在引号中包含字符串。 -
您没有在您的问题或下面的答案中提供足够的信息来重现问题;如果您不提供,我们将关闭问题,因为它对其他人没有帮助。我希望你能提供更多,因为问题中有一些我仍然很好奇的有趣点。
标签: r list escaping set-intersection