当 df 也包含字符串时,将 data.frame 转换为数字矩阵的正确方法?

标签 r if-statement matrix numeric

我有一个取自 .csv 文件的数据框,其中包含数字和字符值。我想把这个数据框转换成矩阵。所有包含的信息都是数字(我删除的非数字行),因此应该可以将数据帧转换为数字矩阵。不过,我确实得到了一个字符矩阵。

我发现解决这个问题的唯一方法是对每一行使用 as.numeric ,但这非常耗时。我非常确定有一种方法可以通过某种 if(i in 1:n) 形式来做到这一点,但我无法弄清楚它是如何工作的。或者真的是从数值开始的唯一方法,就像这里提出的那样(Making matrix numeric and name orders)?

对于你们大多数人来说,这可能是一件非常简单的事情:P

矩阵要大得多,这只是前几行...代码如下:

cbind(
as.numeric(SFI.Matrix[ ,1]),
as.numeric(SFI.Matrix[ ,2]),
as.numeric(SFI.Matrix[ ,3]),
as.numeric(SFI.Matrix[ ,4]),
as.numeric(SFI.Matrix[ ,5]),
as.numeric(SFI.Matrix[ ,6]))  

# to get something like this again:

Social.Assistance Danger.Poverty GINI S80S20 Low.Edu        Unemployment 
0.147             0.125          0.34    5.5   0.149        0.135 0.18683691
0.258             0.229          0.27    3.8   0.211        0.175 0.22329362
0.207             0.119          0.22    3.1   0.139        0.163 0.07170422
0.219             0.166          0.25    3.6   0.114        0.163 0.03638525
0.278             0.218          0.29    4.1   0.270        0.198 0.27407825
0.288             0.204          0.26    3.6   0.303        0.211 0.22372633

感谢您的帮助!

最佳答案

编辑 2:请参阅@flodel 的回答。好多了。

尝试:

# assuming SFI is your data.frame
as.matrix(sapply(SFI, as.numeric))  

编辑: 或如 @CarlWitthoft 在评论中建议的那样:

matrix(as.numeric(unlist(SFI)),nrow=nrow(SFI))

关于当 df 也包含字符串时,将 data.frame 转换为数字矩阵的正确方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16518428/

相关文章:

r - 在 R 中的状态 map 上绘制条形图

R Shiny 基于复选框输入的多个 slider 动态输入

R传单连续图例中的相反顺序

javascript - Greasemonkey:为什么这个 if 语句总是返回 true?

matlab - 从现有矩阵中提取矩阵

android - 如何设置图像矩阵的位置?

string - 自动将变量名称添加到列表的元素

javascript - 嵌套 if 语句与 &&(or) 运算符

batch-file - 批量备份-溢出

c++ - 为什么在与GLSL中的矩阵相乘后z坐标会翻转 - OpenGL