R 关于比较从csv文件导入的两个字符数组的正确方法

R 关于比较从csv文件导入的两个字符数组的正确方法,r,R,我有一个csv文件,第一行是纯文本,其他行是数值。我需要将第一行读入一个字符向量 matrixR = read.csv("testR.csv",sep=",",header=FALSE) matrixR[1,] V1 V2 V3 V4 V5 academic adagio admiral allan alt 上面是第一行。除了这个文件,我还有另一个csv文件,格式与第一个文件相同。我读到如下: matrixJ = read.csv("testJ.csv",

我有一个csv文件,第一行是纯文本,其他行是数值。我需要将第一行读入一个字符向量

matrixR = read.csv("testR.csv",sep=",",header=FALSE)
matrixR[1,]
    V1     V2      V3    V4  V5  
academic adagio admiral allan alt
上面是第一行。除了这个文件,我还有另一个csv文件,格式与第一个文件相同。我读到如下:

matrixJ = read.csv("testJ.csv",sep=",",header=FALSE)
matrixJ[1,]
    V1     V2      V3    V4  V5  
academic  admiral abc alt bd
对于matrixR第一行中的每个条目,我需要检查它是否也存在于matrixJ的第一行中。如果它存在,我需要捕获它在matrixJ的第一行中的对应位置。我就是这样做的

which(matrixR[1,2]==matrixJ[1,])
Error in matrixR[1, 2] == matrixJ[1, ] : 
  comparison of these types is not implemented
In addition: Warning message:
  In which(matrixR[1, 2] == matrixJ[1, ]) :
  Incompatible methods ("Ops.factor", "Ops.data.frame") for "=="
实现这种功能的正确方法应该是什么?谢谢

下面是我按照建议所做的,看起来结果仍然不正确

> matrixR = as.matrix(read.csv("testWeightR1.csv",sep=",",header=FALSE))
> matrixJ =as.matrix(read.csv("testWeightJ1.csv",sep=",",header=FALSE))
> which(unlist(matrixR[1,]) %in% unlist(matrixJ[1,]))
   [1] 1 2 3 4 6
matrixR和matrixJ的信息如下:

matrixJ = read.csv("testJ.csv",sep=",",header=FALSE)
matrixJ[1,]
    V1     V2      V3    V4  V5  
academic  admiral abc alt bd
matrixR[1,] V1 V2 V3 V4 V5 V6 “学术”“慢板”“上将”“艾伦”“测试”“上将” matrixJ[1,] V1 V2 V3 V4 V5 V6 “学术”“慢板”“海军上将”“艾伦”“alt”“ans” dput(头部(X))


这将为您提供所需的内容,并将%中的
%与
一起使用,其中`:

which(matrixR[1,] %in% matrixJ[1,])
=
用于与一个项目进行比较。在与向量进行比较时,请使用%

编辑…

如果是矩阵,请尝试:

which(unlist(matrixR[1,]) %in% unlist(matrixJ[1,]))
编辑2…

既然您已经提供了可复制的示例,那么就更容易给您提供更准确的建议:

matrixR  <-
 structure(c("academic", "0", "0", "0", "0", "0", "adagio", "0", 
 "0", "0", "0", "0", "admiral", "0", "0", "0", "0", "0", "allan", 
 "0", "0", "0", "0", "0", "test", "2", "2", "1", "1", "1", "admiral", 
 "0", "0", "0", "0", "0"), .Dim = c(6L, 6L), .Dimnames = list(
  NULL, c("V1", "V2", "V3", "V4", "V5", "V6")))

matrixJ <-
 structure(c("academic", "0", "0", "0", "0", "0", "adagio", "0", 
 "0", "0", "0", "0", "admiral", "0", "0", "0", "0", "0", "allan", 
 "0", "0", "0", "0", "0", "alt", "2", "2", "1", "1", "1", "ans", 
 "0", "1", "1", "0", "1"), .Dim = c(6L, 6L), .Dimnames = list(
  NULL, c("V1", "V2", "V3", "V4", "V5", "V6")))

#> matrixR 
#     V1         V2       V3        V4      V5     V6       
#[1,] "academic" "adagio" "admiral" "allan" "test" "admiral"
#[2,] "0"        "0"      "0"       "0"     "2"    "0"      
#[3,] "0"        "0"      "0"       "0"     "2"    "0"      
#[4,] "0"        "0"      "0"       "0"     "1"    "0"      
#[5,] "0"        "0"      "0"       "0"     "1"    "0"      
#[6,] "0"        "0"      "0"       "0"     "1"    "0"      
#> 
#> matrixJ 
#     V1         V2       V3        V4      V5    V6   
#[1,] "academic" "adagio" "admiral" "allan" "alt" "ans"
#[2,] "0"        "0"      "0"       "0"     "2"   "0"  
#[3,] "0"        "0"      "0"       "0"     "2"   "1"  
#[4,] "0"        "0"      "0"       "0"     "1"   "1"  
#[5,] "0"        "0"      "0"       "0"     "1"   "0"  
#[6,] "0"        "0"      "0"       "0"     "1"   "1"  

which(matrixR[1, ] %in% matrixJ[1, ])

#> which(matrixR[1, ] %in% matrixJ[1, ])
#[1] 1 2 3 4 6
matrixR
#>matrixJ
#V1 V2 V3 V4 V5 V6
#[1]“学术”“慢板”“海军上将”“艾伦”“alt”“ans”
#[2,] "0"        "0"      "0"       "0"     "2"   "0"  
#[3,] "0"        "0"      "0"       "0"     "2"   "1"  
#[4,] "0"        "0"      "0"       "0"     "1"   "1"  
#[5,] "0"        "0"      "0"       "0"     "1"   "0"  
#[6,] "0"        "0"      "0"       "0"     "1"   "1"  
其中(matrixR[1,]%在%matrixJ[1,]中)
#>其中(matrixR[1,]%在%matrixJ[1,]中)
#[1] 1 2 3 4 6

请注意,这是我最初给您的回答,除非您正在寻找其他内容:

我尝试了>哪个(matrixR[1,1]%在%matrixJ[1,])整数(0)我希望得到“学术”的位置,应该是1请参阅我的编辑,我还可以建议一个最小的可复制示例,可能是
dput(head(matrixR))
dput(head)(matrixJ))
,因此更容易理解问题的结构。我已经发布了结果,看起来结果仍然不正确。