我有一个带有名字的字符矩阵M1和带有值的命名列表L1。
我想创建一个矩阵M2,其值与M1的大小相同。对于M2中的每个单元,应该存在L1中与M1中的名称对应的值。 M1的名称不在L1,M2的单元格应为NA。
我试图这样做,但没有成功。
以下是我想要做的一个例子。
>M1
[,1] [,2] [,3] [,4]
[1,] "n1" "n4" "n7" "n10"
[2,] "n2" "n5" "n8" "n11"
[3,] "n3" "n6" "n9" "n12"
> L1
$n1
[1] 1
$n2
[1] 2
$n8
[1] 3
$n25
[1] 4
从那里M2应该最终成为:
> M2
[,1] [,2] [,3] [,4]
[1,] 1 NA NA NA
[2,] 2 NA 3 NA
[3,] NA NA NA NA
可重复的例子,
dput(m1)
structure(c("n1", "n2", "n3", "n4", "n5", "n6", "n7", "n8", "n9",
"n10", "n11", "n12"), .Dim = 3:4)
dput(L1)
structure(list(n1 = 1, n2 = 2, n8 = 3, n25 = 4), .Names = c("n1",
"n2", "n8", "n25"))
答案 0 :(得分:2)
一种方法是unlist
L1
并将名称与矩阵的每个元素相匹配
apply(m1, 1:2, function(i) unlist(L1)[match(i, names(L1))])
# [,1] [,2] [,3] [,4]
#[1,] 1 NA NA NA
#[2,] 2 NA 3 NA
#[3,] NA NA NA NA
答案 1 :(得分:-4)
我们也可以通过{{1}使用'{1}}的'{1}}来获取索引并使用它替换为'L1',并更改维度
XMLGregorianCalendar rqDateTime =
paramsContainer.<XMLGregorianCalendar>getWithType(Param.SYS_RATES_DATE);