Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 数字数据的读入_R - Fatal编程技术网

R 数字数据的读入

R 数字数据的读入,r,R,我在文本文件中输入带有括号的数字数据。 记录一个看起来像 jelly(34) 我被告知“(”需要作为\(”转义) 我想这意味着“)“需要作为\”)转义) 我真的不知道这是什么意思。 如何使用escape,是否需要特定的读入函数来执行此操作 我希望输出像这样 jelly 34 其中,jelly是字符串,34是数字 在处理括号之前,我需要处理长度不等的记录的输入。下面给出了输入姓名(文本)和年龄(数字)的代码 R代码: dirdata<-"c:\data" d=read.table(paste

我在文本文件中输入带有括号的数字数据。 记录一个看起来像
jelly(34)

我被告知“(”需要作为\(”转义) 我想这意味着“)“需要作为\”)转义) 我真的不知道这是什么意思。 如何使用escape,是否需要特定的读入函数来执行此操作

我希望输出像这样
jelly 34
其中,jelly是字符串,34是数字

在处理括号之前,我需要处理长度不等的记录的输入。下面给出了输入姓名(文本)和年龄(数字)的代码

R代码:

dirdata<-"c:\data"
d=read.table(paste0(dirdata,"top.txt"),
header = FALSE,  sep=" ",
strip.white = TRUE, 
stringsAsFactors = FALSE
#colClasses= ("character",numeric")
#col.names= (V1 V2 V3 V4 V5 V6 V7 V8 V9 V10 V11 V12 V13 V14)
)

# data  top.txt
#Jack 1 Ben 25 Hunter 49 Di 73 Miguel 97 Mike 2 Zach 26
#Tammy 50
#Jules 74 Jake 98
# ... unequal record lengths

#Error in scan(file = file, what = what, sep = sep, quote = quote, 
 dec = dec,   
#line 2 did not have 14 elements

dirdata如果我理解正确,您正在尝试将
jelly(34)
转换为两个对象,一个字符
jelly
和一个数字
34

是特殊字符,因此要选择它们,必须使用
\
。您还可以使用库
rebus
查找
OPEN\u PAREN
CLOSE\u PAREN

在这里,我编写了一个小代码来获取您的请求。这是一个解决方案,除其他外,我毫不怀疑有其他方法可以实现这一结果

因此,使用您的示例并假设所有数值向量都是用括号编写的,它应该是:

words=c(“杰克(1)”、“本(25)”、“亨特(49)”、“迪(73)”、“米格尔(97)”、“迈克(2)”、“扎克(26)”)
word=data.frame(t(sapply(字,函数(x){rbind(unlist(strsplit(x,”)))))})
用于(i/1:长度(字))
{
if(grepl(“\\(”,word[,i])==TRUE)
{
单词[,i]=gsub(“\\(“,”,单词[,i])
单词[,i]=gsub(“\\),”,单词[,i])
字[,i]=作为数字(字[,i])
}
else{word[,i]=as.character(word[,i]))
}
因此,在最后,您将得到以下数据帧,其中包含一个字符向量和一个数字向量

>str(word)
“data.frame”:2个变量中的7个对象:
$X1:chr“杰克”“本”“亨特”“迪”。。。
$X2:num125497397226

这就是你想要的吗?

如果你只是想去掉括号,你也可以在gsub中使用
fixed=TRUE
选项

library(dplyr)
word <- "jelly (34)"
word %>% gsub("(", "", ., fixed = TRUE) %>% gsub(")", "", ., fixed = TRUE) 
库(dplyr)
单词%gsub((“,”,,,fixed=TRUE)%>%gsub(“)”,,,,,fixed=TRUE)

问题还不清楚。你能说明预期的输出和输入数据是转义字符的意思吗。但正如@akrun所说,请提供更多的上下文。例如,谁或什么人告诉你转义括号?相关:是的。请注意我在这篇文章中所做的更改,特别是转义字符的更多细节和输入数据。我需要将你的解决方案应用于一个词向量。我对所有这些函数都不熟悉,因此需要进行一些研究。请参阅帖子。谢谢。嗨,玛丽,我更新了我的答案,包括对词向量的操作(带括号)。让我知道这是否是你想要的。洪,我将以名称(数字)的形式阅读数据.例如Jake(58)。现在为了简化,我需要学习如何读取可变长度的记录。我暂时删除了括号。