楼主: znn_0802
6329 9

[问答] 请问R里的表头数据是字符型,怎么转换成数字型? [推广有奖]

  • 0关注
  • 0粉丝

大专生

31%

还不是VIP/贵宾

-

威望
0
论坛币
660 个
通用积分
0.0010
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
291 点
帖子
28
精华
0
在线时间
43 小时
注册时间
2010-12-2
最后登录
2022-3-31

楼主
znn_0802 发表于 2017-6-28 12:29:42 |AI写论文
1论坛币
各位R语言大侠,我做的数据的性质是这样的> str(M) num [1:17, 1] 0.087 0.174 0.261 0.304 0.391 ... - attr(*, "dimnames")=List of 2  ..$ : chr [1:17] "843.029368" "1019.344596" "1254.425857" "1413.339891" ...  ..$ : NULL怎样把数据里的 "843.029368" "1019.344596" "1254.425857" "1413.339891" ...转换成数字型,或者怎样访问到这个字符型的数据?因为访问不到所以没法转换。> M[,1] 843.029368    1019.344596 1254.425857 1413.339891 1483.142369 1509.056375       0.087       0.174       0.261       0.304       0.391       0.4784  > M[1,]843.029368      0.087 如上所示,没法访问或提取这个向量"843.029368" "1019.344596" "1254.425857" "1413.339891" ... 请各位大侠帮忙!谢谢各位!

最佳答案

jiangbeilu 查看完整内容

用names(M)就可以找到你需要的数据。 M1
关键词:字符型 Names name null list

沙发
jiangbeilu 学生认证  发表于 2017-6-28 12:29:43
znn_0802 发表于 2017-6-30 12:32
您好,请看下我上面的回复,数据在回复的附件里,请您帮忙看一下。谢谢您!
用names(M)就可以找到你需要的数据。
M1 <- as.numeric(names(M))
names(M) <- NULL
M 就是一个不包含名称的向量

藤椅
jiangbeilu 学生认证  发表于 2017-6-29 09:33:57
这个M是一个list吧,需要先用M[[1]]来提取第一部分,如果这部分是data.frame,那么再根据data.frame的规则进行提取。
请用as.numeric()函数进行转化。
如果不能转化,则需要将向量里的非数值进行清理,有时候可能是一个点,或者NULL,都变成NA就可以了。

板凳
znn_0802 发表于 2017-6-29 12:11:14
jiangbeilu 发表于 2017-6-29 09:33
这个M是一个list吧,需要先用M[[1]]来提取第一部分,如果这部分是data.frame,那么再根据data.frame的规则进 ...
您好,谢谢您的回答。可是M[1]最终还是将结果的字符部分和数值部分同时提取出来了,即如下结果:
> M[1]
843.029368
0.08695652
我也用过as.numeric()函数转换,但是转换的结果是这样的:
> b<-as.numeric(M)
> b
[1] 0.08695652 0.17391304 0.26086957 0.30434783 0.39130435 0.47826087 0.52173913
[8] 0.60869565 0.65217391 0.69565217 0.73913043 0.78260870 0.82608696 0.86956522
[15] 0.91304348 0.95652174 1.00000000
可是我需要将
843.029368,1019.344596,1254.425857,1413.339891,1483.142369,1509.056375,1631.761264,2321.958597,3073.566814,3122.96811,3603.794631,3840.44455,3994.477386,4050.149902,4229.489091,7215.181669,9981.56995这组字符型的表头也提取出来,然后画两者的关系图。但现在就是提取不出来。要么就是数值型数据出来像b结果,要么就是数值和字符一起出来像M[1]结果,但是两者就是分不开
请帮忙想个办法。
>str(M)
Named num [1:17] 0.087 0.174 0.261 0.304 0.391 ...
- attr(*, "names")= chr [1:17] "843.029368" "1019.344596" "1254.425857" "1413.339891"

报纸
jiangbeilu 学生认证  发表于 2017-6-29 17:39:27
znn_0802 发表于 2017-6-29 12:11
您好,谢谢您的回答。可是M[1]最终还是将结果的字符部分和数值部分同时提取出来了,即如下结果:
> M[1] ...
双中括号提取

地板
znn_0802 发表于 2017-6-29 19:15:55
jiangbeilu 发表于 2017-6-29 17:39
双中括号提取
> M[[1]]
[1] 0.08695652
> M[[2]]
[1] 0.173913

还是不对,还是只能提取到数字部分的内容,字符的数据还是不能单独提取。请问还有别的办法么?

7
jiangbeilu 学生认证  发表于 2017-6-30 08:40:31
znn_0802 发表于 2017-6-29 19:15
> M[[1]]
[1] 0.08695652
> M[[2]]
你给的数据并不能看清数据本来的结构,可否上传一下你的数据呢?

8
znn_0802 发表于 2017-6-30 12:29:55
kddd.txt (7.33 KB)
setwd("C:/Users/znn/Desktop/R语言编程实现矿点网格大小")
m<- read.table("kddd.txt")
m1<-apply(m,2,function(m){m[m==0]<-NA;min(m, na.rm = TRUE)})
M<-cumsum(prop.table(table(m1)))
str(M)

您好!这是我前面的语句实现的过程,原始数据见附件,得到的M就是结果如下:
> M
843.029368 1019.344596 1254.425857 1413.339891 1483.142369 1509.056375 1631.761264  0.08695652  0.17391304  0.26086957  0.30434783  0.39130435  0.47826087  0.52173913 2321.958597 3073.566814  3122.96811 3603.794631  3840.44455 3994.477386 4050.149902  0.60869565  0.65217391  0.69565217  0.73913043  0.78260870  0.82608696  0.86956522 4229.489091 7215.181669  9981.56995  0.91304348  0.95652174  1.00000000
> str(M)
Named num [1:17] 0.087 0.174 0.261 0.304 0.391 ... - attr(*, "names")= chr [1:17] "843.029368" "1019.344596" "1254.425857" "1413.339891" ...
M中的字符部分和数字部分不开,请麻烦帮我看一下咋样能分开访问,我就可以画两者的关系图了。





9
znn_0802 发表于 2017-6-30 12:32:02
jiangbeilu 发表于 2017-6-30 08:40
你给的数据并不能看清数据本来的结构,可否上传一下你的数据呢?
您好,请看下我上面的回复,数据在回复的附件里,请您帮忙看一下。谢谢您!

10
znn_0802 发表于 2017-6-30 16:50:11
jiangbeilu 发表于 2017-6-28 12:29
用names(M)就可以找到你需要的数据。
M1
非常感谢您!您解决了我的问题,我是R的初学者,很多基础还是不行,谢谢您!

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-9 07:58