楼主: maiweijie4321
3232 11

[问答] 列表转为字符向量。疑问的描述请看下面: [推广有奖]

  • 0关注
  • 0粉丝

硕士生

0%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
0.2148
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
817 点
帖子
65
精华
0
在线时间
147 小时
注册时间
2017-12-6
最后登录
2021-4-14

楼主
maiweijie4321 发表于 2018-10-11 17:21:02 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币

之前我的疑问可能没有说清楚,现在我向各位再讲一次,我遇到的问题可以描述成这样:

有一个列表doc.list,假如其长度为4,列表的各个元素内容如下:

doc.list[1]的内容为:”a” “ab” “abc”

doc.list[2]的内容为:我们” “大概” “ 中国人” “知道”  

doc.list[3]的内容为:“1” “2” “3” “4”“5”

doc.list[4]的内容为:”A” “B”

列表每个元素包含的内容长度可能不一样。

现在,我要把doc.list里面的各个元素内容转换为字符串形成,假如保存在ch中,即想得到的结果为:

ch[1]为:”a” “ab” “abc”

ch[2]为:我们” “大概” “ 中国人” “知道

ch[3]为:“1” “2” “3” “4” “5”

ch[4]为:”A” “B”

我尝试过用函数ch<-unlist(doc.list),虽然可以把列表变字符串向量,但是得到的结果是所有的字符首尾链接了,即用unlist结果变成为了:

”a” “ab” “abc” ”我们” “大概” “ 中国人” “知道” “1” “2” “3”“4” “5” ”A” “B”

该结果不能按doc.list样子以行分开。

我又这样尝试了:

ch <- vector( mode ="character" )

for(i in doc.list){

ch<-paste(unlist(i))

}

结果虽然以行分开了,但结果只显示了最后一行,即仅仅显示:

”A” “B”

希望各位帮下我,想下办法咯,感激涕流~


二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:遇到的问题 中国人 不一样 字符串

沙发
ryoeng 在职认证  发表于 2018-10-11 19:15:43
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽

藤椅
maiweijie4321 发表于 2018-10-11 22:42:04
ryoeng 发表于 2018-10-11 19:15
楼主想要得到的是什么结果?
你好。你给的代码是我在问题列出来的doc.list内容,我就是想把doc.list的内容转为每一行都为一个字符向量,假设保存在ch中。那么,length(ch)=4,结果就是:
ch[1]
[1] "a"   "ab"  "abc"
ch[2]
"我们"   "大概"   "中国人" "知道"
ch[[3]
"1" "2" "3" "4" "5"
ch[4]
"A" "B"
其中,变量ch为character类型
不知道你是否可以帮下我。多谢!

板凳
maiweijie4321 发表于 2018-10-12 14:59:09
没有关注或者会吗?小妹在线等

报纸
ryoeng 在职认证  发表于 2018-10-13 14:25:48

整理代码

提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽

地板
maiweijie4321 发表于 2018-10-14 00:43:12
ryoeng 发表于 2018-10-13 14:25
不明白,是这样吗?
不是的,我想得到结果保存在ch中,而且都是character型。你这个结果还是列表的型。我想得到的结果:
ch[1] "a"   "ab"  "abc"
ch[2]"我们"   "大概"   "中国人" "知道"
ch[3]"1" "2" "3" "4" "5"
ch[4]A" "B"
例如,对于成doc.list[1],通过输入命令:paste(unlist(doc.list[1]),那么,就可以得到ch[1]d的内容为:"a"   "ab"  "abc",且ch[1]为字符向量,而不是列表,且length(ch[1])=4

我现在的问题是,我只会一个个地把doc.list组件转换成字符向量:
ch1<-paste(unlist(doc.list[1]))
ch2<-paste(unlist(doc.list[2]))
ch3<-paste(unlist(doc.list[3]))
ch4<-paste(unlist(doc.list[4]))
而不会一次性全部把doc.list全部转换成ch的内容,我想一次性全部转换,把ch1~ch4全部保存在ch中。不知道你是否明白了?

7
carriedss 发表于 2019-4-9 23:57:21
请问楼主解决了吗?如何解决的呀?

8
zhou1_20 发表于 2019-4-10 10:59:35 来自手机
carriedss 发表于 2019-4-9 23:57
请问楼主解决了吗?如何解决的呀?
楼主对R中向量的理解有误

9
maiweijie4321 发表于 2019-4-10 12:47:38
zhou1_20 发表于 2019-4-10 10:59
楼主对R中向量的理解有误
求解决问题

10
zhou1_20 发表于 2019-4-10 13:21:54
maiweijie4321 发表于 2019-4-10 12:47
求解决问题
doc.list <- list(c('a', 'ab', 'abc'),
                 c('我们', '大概', '中国人', '知道'),
                 as.character(1:5),

n=length(doc.list)                 
                 
#方法一
sapply(1:n, function(i) paste(unlist(doc.list)))

#方法二
sapply(1:n, function(i) unlist(doc.list))

#体会下下面代码的区别
paste(unlist(doc.list[1]))
unlist(doc.list[1])

#方法三,按你的要求只能做成这样了
library(stringr)
paste0("'",unlist(sapply(1:n, function(i) paste(doc.list[], collapse = ' ')))%>%
  str_replace_all(' ', "' '"),"'")


  

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

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