我有兩個列表,我從API獲取。我需要比較R中的兩個列表來確定哪些項目出現在這兩個列表中。我曾希望用intersect()命令來做到這一點,但它不起作用。經過進一步的檢查,我注意到每個列表實際上是一個由逗號和轉義字符分隔的多個項目組成的單個向量。是否有可能將這些向量轉換爲多項目列表,以便我可以比較列表?下面是一些示例代碼:如何比較兩個字符向量與R中的轉義字符?
我想什麼:
> 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'強制字符。 – Aaron
我無法複製你的錯誤。列表版本基於此代碼正常工作。雖然Ryan Runge在答案中指出,你應該使用'c()'而不是'list()' –
這真的是'as.character'的確切輸出嗎?通常它會以'[1]'開頭,並且用引號括起字符串。 – Aaron