R 使用异常定界符读取文本文件
我正在使用一种算法对文本向量进行柠檬化。输出是一个以下图所示方式存储的.txt文件。 原始单词列在第一列,而各种引理列在第二列,然后是一些语法分类。我想把这个读入R,但不知道怎么做。我试过各种形式的分离器,但似乎都不起作用 理想情况下,我希望R中的数据框如下所示,其中我只读取每个引理的第一次出现: 也许最好的选择是读取数据,只保留第一次出现的数据(即da da adv),然后执行类似于文本到列的操作,只保留前两列 柠檬化算法的输出:R 使用异常定界符读取文本文件,r,text,lemmatization,read-data,R,Text,Lemmatization,Read Data,我正在使用一种算法对文本向量进行柠檬化。输出是一个以下图所示方式存储的.txt文件。 原始单词列在第一列,而各种引理列在第二列,然后是一些语法分类。我想把这个读入R,但不知道怎么做。我试过各种形式的分离器,但似乎都不起作用 理想情况下,我希望R中的数据框如下所示,其中我只读取每个引理的第一次出现: 也许最好的选择是读取数据,只保留第一次出现的数据(即da da adv),然后执行类似于文本到列的操作,只保留前两列 柠檬化算法的输出: "<da>" "da" adv
"<da>"
"da" adv
"da" sbu
"da" subst fork
"<dette>"
"dette" det dem nøyt ent
"dette" pron nøyt ent pers 3
"dette" verb inf
"<er>"
"være" verb pres <aux1/perf_part>
"<den>"
"den" det dem fem ent
"den" det dem mask ent
"den" pron mask fem ent pers 3
下面是一个有趣的结果:使用read.table可以很好地读取文件:
s <- '"<da>"
"da" adv
"da" sbu
"da" subst fork
"<dette>"
"dette" det dem nøyt ent
"dette" pron nøyt ent pers 3
"dette" verb inf
"<er>"
"være" verb pres <aux1/perf_part>
"<den>"
"den" det dem fem ent
"den" det dem mask ent
"den" pron mask fem ent pers 3
'
x <- read.table(sep='', text=s, colClasses=c('character','character'), flush=TRUE, fill=TRUE)
> x
V1 V2 V3
1 <da>
2 da adv
3 da sbu
4 da subst fork
5 <dette>
6 dette det dem
7 dette pron nøyt
8 dette verb inf
9 <er>
10 være verb pres
11 <den>
12 den det dem
13 den det dem
14 den pron mask
下面是一个有趣的结果:使用read.table可以很好地读取文件:
s <- '"<da>"
"da" adv
"da" sbu
"da" subst fork
"<dette>"
"dette" det dem nøyt ent
"dette" pron nøyt ent pers 3
"dette" verb inf
"<er>"
"være" verb pres <aux1/perf_part>
"<den>"
"den" det dem fem ent
"den" det dem mask ent
"den" pron mask fem ent pers 3
'
x <- read.table(sep='', text=s, colClasses=c('character','character'), flush=TRUE, fill=TRUE)
> x
V1 V2 V3
1 <da>
2 da adv
3 da sbu
4 da subst fork
5 <dette>
6 dette det dem
7 dette pron nøyt
8 dette verb inf
9 <er>
10 være verb pres
11 <den>
12 den det dem
13 den det dem
14 den pron mask
当复制将文本粘贴到文本文件中时,这对我起到了作用:
#Read the data
data <- readLines('temp.txt')
#index where new group starts. I have considered no whitespace at the beginning
# of the string as an indication for new group.
groups <- !startsWith(data, ' ')
#Since the first word is same in the entire group, we take first word
#from 2nd element as 1st element is group name
value <- tapply(data, cumsum(groups), function(x)
sub('"(\\w+).*', '\\1', trimws(x[2])))
#Create dataframe with group name and value.
data.frame(groups = data[groups], value)
# groups value
#1 "<da>" da
#2 "<dette>" dette
#3 "<er>" være
#4 "<den>" den
#读取数据
数据当复制将文本粘贴到文本文件时,这对我有效:
#Read the data
data <- readLines('temp.txt')
#index where new group starts. I have considered no whitespace at the beginning
# of the string as an indication for new group.
groups <- !startsWith(data, ' ')
#Since the first word is same in the entire group, we take first word
#from 2nd element as 1st element is group name
value <- tapply(data, cumsum(groups), function(x)
sub('"(\\w+).*', '\\1', trimws(x[2])))
#Create dataframe with group name and value.
data.frame(groups = data[groups], value)
# groups value
#1 "<da>" da
#2 "<dette>" dette
#3 "<er>" være
#4 "<den>" den
#读取数据
数据您好,将数据作为图像并不是共享它们的最佳方式:因为它们是在.txt中,您可以将示例粘贴为文本(等于:空格等),以便可以将其复制并粘贴到.txt中,并在我们的计算机中创建您的情况。感谢您的评论,您当然完全正确。。。我现在已经更新了问题。你的文本与你的图像不匹配。。。哪一个是正确的?我认为它们现在应该匹配…嗨,将数据作为图像并不是共享它们的最佳方式:因为它们是在.txt中,您可以将示例粘贴为文本(等于:空格等),以便可以将其复制并粘贴到.txt中,并在我们的计算机中创建您的情况。谢谢您的评论,你当然是完全正确的。。。我现在已经更新了问题。你的文本与你的图像不匹配。。。哪一个是正确的?我想他们现在应该匹配了…非常好的导入,比我的更简单。请获得我的支持。这是一个非常优雅的解决方案,谢谢!但是,在运行第二部分(mutate等)时,我收到了以下错误消息:vec\u rbind(!!!x,.ptype=ptype)中的错误:vec\u assign()
:值
应该循环使用以适应x
。对如何解决这个问题有什么建议吗?我对R还比较陌生,所以非常感谢您的帮助!我可以用与你建议相同的直觉找到一个解决方法,但使用聚合。非常感谢你的帮助!非常好的导入,比我的更简单,请获得我的支持。这是一个非常优雅的解决方案,谢谢!但是,在运行第二部分(mutate等)时,我收到了以下错误消息:vec\u rbind(!!!x,.ptype=ptype)中的错误:vec\u assign()
:值
应该循环使用以适应x
。对如何解决这个问题有什么建议吗?我对R还比较陌生,所以非常感谢您的帮助!我可以用与你建议相同的直觉找到一个解决方法,但使用聚合。非常感谢你的帮助!