是的....那样很奇怪。我不会说它“失败”,但它的格式需要一些工作。这是我保存上述单元格数组并将其加载到 R 中时得到的:
> library("R.matlab")
> Names <- readMat("RDataIn.mat")
> Names
$Names
$Names[[1]]
$Names[[1]][[1]]
[,1]
[1,] "A"
$Names[[2]]
$Names[[2]][[1]]
[,1]
[1,] "B"
$Names[[3]]
$Names[[3]][[1]]
[,1]
[1,] "C"
$Names[[4]]
$Names[[4]][[1]]
[,1]
[1,] "D"
attr(,"header")
attr(,"header")$description
[1] "MATLAB 5.0 MAT-file, Platform: MACI64, Created on: Sat Mar 28 13:12:31 2015 "
attr(,"header")$version
[1] "5"
attr(,"header")$endian
[1] "little"
如您所见,Names 包含一个嵌套列表,其中每个字符串都存储在一个 1 x 1 矩阵中。您可以做的是访问此列表的唯一元素,然后在此列表中,遍历所有元素并提取每个嵌套元素的第一个元素。这包含您要查找的每个“名称”或字符串。您可以为此使用标准的sapply 调用,并为列表中的每个元素应用一个自定义函数,该函数将为您提取每个嵌套元素的第一个元素。
x <- sapply(Names[[1]], function(n) n[[1]])
x 将是一个名称向量,我得到:
> x
[1] "A" "B" "C" "D"
您可以通过标准矢量索引访问每个“名称”:
> x[1]
[1] "A"
> x[2]
[1] "B"
> x[3]
[1] "C"
> x[4]
[1] "D"