r - 如何将输入和输出表转换为矩阵?
问题描述
我正在尝试将当前列为 data.table 中的列的输入和输出表(就像介绍函数的初中/高中代数教科书一样,请参见下面的示例)转换为输入为行和列标签以及输出的矩阵作为矩阵条目。
> dt <- data.table(x = c("a","b","c"), y = c("T1", "T2", "T2"), z = c(10:12))
> dt
x y z
1: a T1 10
2: b T2 11
3: c T2 12
> dt2 <- data.table(x = c("a","b","c"), T1 = c(10,0,0), T2 = c(0,11,12))
> dt2
x T1 T2
1: a 10 0
2: b 0 11
3: c 0 12
我在生成时的第一个想法dt2
是创建它但用 0 填充,然后创建一个函数 f(x,y) 以将与 dt 中的每个 (x,y) 关联的“z”带到其对应位置 (x,y) , 在dt2
, 即:
> dt2attempt <- data.table(x = c("a","b","c"), T1 = c(0,0,0), T2 = c(0,0,0))
> dt2attempt
x T1 T2
1: a 0 0
2: b 0 0
3: c 0 0
我坚持创建函数 f(x,y) 以关联dt
到dt2attempt
,从而生成dt2
。有更好的方法吗?提供的任何建议或功能将不胜感激。
解决方案
dt2
可以生成dcast
:
> dcast(dt, x ~ y, value.var = 'z', fill = 0)
x T1 T2
1: a 10 0
2: b 0 11
3: c 0 12
推荐阅读
- javascript - 谷歌折线图颜色?
- java - 如何解决 Java 中的哈希冲突
- powershell - ADUser 搜索:Get-ADUser 和 DirectorySearcher
- node.js - MongoDB - 我如何创建索引有什么问题?
- visual-studio - 如何在visual studio ide扩展定制中调用自定义函数?
- java - Java:从零舍入的函数?
- python - Keras 在优化器中更新损失值
- ssl-certificate - haproxy 能够添加客户端 ssl 证书吗?
- python-3.x - 如何初始化具有特定维度的空张量并通过循环附加到它而没有 CUDA 内存不足?
- php - 在函数中传递默认参数值不起作用