【发布时间】:2021-12-28 12:40:12
【问题描述】:
我有以下矩阵:
Type Tenor Frequency Rate
[1,] "SWAP" "1" "1" "-0.0048"
[2,] "SWAP" "2" "1" "-0.00334"
[3,] "SWAP" "3" "1" "-0.00221"
[4,] "SWAP" "4" "1" "-0.00135"
[5,] "SWAP" "5" "1" "-0.00051"
[6,] "SWAP" "6" "1" "0.00022"
[7,] "SWAP" "7" "1" "9e-04"
[8,] "SWAP" "8" "1" "0.00156"
[9,] "SWAP" "9" "1" "0.002155"
[10,] "SWAP" "10" "1" "0.002787"
但我需要对其中一些值进行二元运算,因此我需要将“Tenor”、“Frequency”和“Rate”列转换为数字。
我尝试使用这个函数:apply(input_matrix, 2, as.numeric) 哪个有效,它给了我这个:
Type Tenor Frequency Rate
[1,] NA 1 1 -0.004800
[2,] NA 2 1 -0.003340
[3,] NA 3 1 -0.002210
[4,] NA 4 1 -0.001350
[5,] NA 5 1 -0.000510
[6,] NA 6 1 0.000220
[7,] NA 7 1 0.000900
[8,] NA 8 1 0.001560
[9,] NA 9 1 0.002155
[10,] NA 10 1 0.002787
但只要我用 for 循环在第一列中插入一个字符串:
for(row in 1:nrow(input_matrix)) {
input_matrix[row, 1] <- "SWAP";
}
它将矩阵中的所有值转换回字符串:
Type Tenor Frequency Rate
[1,] "SWAP" "1" "1" "-0.0048"
[2,] "SWAP" "2" "1" "-0.00334"
[3,] "SWAP" "3" "1" "-0.00221"
[4,] "SWAP" "4" "1" "-0.00135"
[5,] "SWAP" "5" "1" "-0.00051"
[6,] "SWAP" "6" "1" "0.00022"
[7,] "SWAP" "7" "1" "9e-04"
[8,] "SWAP" "8" "1" "0.00156"
[9,] "SWAP" "9" "1" "0.002155"
[10,] "SWAP" "10" "1" "0.002787"
所以我不能对其进行操作。
如何仅将特定列转换为数字?
我也尝试过apply(input_matrix[,2:4], 2, as.numeric),但它只返回最后 3 列。
额外问题:为什么会产生这种效果(将矩阵中的所有值转换回字符串)?
【问题讨论】:
-
矩阵是R中向量的扩展,但是有维度,所以它们只能有一种类型。您需要一个数据框,它是列表的扩展来保存不同类型的列。阅读更多here。
-
这能回答你的问题吗? How to change matrix column type in R
标签: r string matrix type-conversion numeric