美文网首页
R--输入与输出

R--输入与输出

作者: KevinCool | 来源:发表于2016-03-21 22:15 被阅读1819次

scan()函数

#从文件读取或者从键盘输入一个向量,可以是数值型的也可以是字符型的
#通过具名参数what=来控制,默认是数值型的
scan("z2.txt")
#输入字符串
scan("z2.txt",what="")
#scan()假定向量间是以空白字符间隔的,其他分隔符的话,使用sep参数
#返回去除分隔符后的字符串向量,如果指定what为字符串的话
scan("z2.txt",sep="\n")
#这个是把每一行当成一个输入
#从键盘输入字符数据
scan("",what="")
v <- scan("")```

#readline()函数

从键盘输入单行数据

w <- readline()

指定提示字符串

inits <- readline("type your initials:")```

print()函数

#打印变量或者表达式的值,但是输出内容带编号
print("abc")```

#cat()函数

在函数体内部打印变量或者表达式的值,print()

但是print()只可以输出一个表达式,并且输出内容带编号

cat()函数就解决了这个问题,比较合理的输出内容

最好带上换行符,否则下次输出就会接着上次输出

cat("abc\n")

默认分隔符是空格,sep改变之

cat("abc","love",sep="\n")
cat("abc","love",sep="")

sep设置为字符串向量

x <- c(5,12,13,8,88,99)
cat(x,sep=c(".",".",".","\n","\n"))```

从文件中读取数据框或者矩阵

#read.table()读取数据框
#表示有表头的数据框读取
z <- read.table("z",header = T)
#读取矩阵
#scan()按行读取,默认间隔是空格,默认读取类型是数字,按行读取,所以设定矩阵按行排列
x <- matrix(scan("x"),nrow=5,byrow = T)
#另外一种方式读取矩阵
read.matrix <- function(filename){
  #先用read.table()读取为数据框,然后用as.matrix转换为矩阵
  as.matrix(read.table(filename))
}```

#读取文本文件

文本文件主要由ASCII字符或者其他编码构成的文件

二进制文件,非文本文件,如图像或者可执行程序文件

使用readLines()读取文本文件

一次性读取整个文件,每一行作为一个向量元素,返回字符串向量

z1 <- readLines("z1")```

连接

#连接用于多种I/O操作的基本机制
#使用file(),url()函数创建
#mode r: open for reading in text mode
c <- file("z1","r")
#n=1使得程序只读取文件的一行
#当读到文件结束符EOF的时候,返回一个空值
readlines(c,n=1)```

#检测代码中的文件结束符

c <- file("z","r")
while(T)
{
r1 <- readLines(c,n=1)
if(length(r1)==0){
print("reached the end")
break
}else print(r1)
}```

改变文件指针,seek()

c <- file("z1","r")
readLines(c,n=2)
#where=0 表示希望把起始指针指向文件的最开头
seek(con = c,where=0)

#close()函数来关闭连接,使得系统将读取数据正式的写入磁盘```

#读取PUMS普查数据

extracts an integer field in the string s, in character positions

rng[1] through rng[2]

传入的rng是一个向量

将字符串读取为数字

intextract <- function(s,rng){

子字符串,start,stop

fld <- substr(s,rng[1],rng[2])
return(as.integer(fld))
}

extractpums <- function(pf,flds){
dtf <- data.frame()
con <- file(pf,"r")

process the input file

repeat{
hrec <- readlines(con,1)
#end of the file, leave loop
if(length(hrec)==0) break
#get hosehold serial number
serno <- intextract(hrec,c(2,8))
#how many person records?
npr <- intextract(hrec,c(106,107))
if(npr>0)
for(i in 1:npr){
#get person record
prec <-readlines(con,1)
#make this person's row for the data frame
person <- makerow(serno,prec,flds)
#add it to the data frame
dtf <- rbind(dtf,person)
}
}
}

set up this person's row for the data frame

fl表示变量名和列范围组成的列表

makerow <- function(srn,pr,fl){
l <- list()
l[["serno"]] <- srn
for(nm in names(fl)){
#传入的是个人记录字符串和列范围
l[[nm]] <- intextract(pr,fl[[nm]])
}
return(l)
}

调用示例

pumsdf <- extractpums("pumsa",list(Gender=c(23,23),Age=c(25,26)))```

写文件

#write.table()函数,将数据框写入文件
kids <- c("jack","jill")
ages <- c(28,29)
d <- data.frame(kids,ages,stringsAsFactors = F)
write.table(d,"kds")
#将矩阵写入文件,声明不要列名和行名
write.table(xc,"xcnew",row.names = F,col.names = F)
#cat()函数也可以用来写文件
cat("abc\n",file="u")
cat("de\n",file="u",append = T)
#也可以写多个字段
cat(file = "u",1,2,3,"i love you \n",append = T)
#还可以使用writeLines()函数,如果使用连接必须设定w参数
con <- file("www","w")
#写入的向量默认将以换行符分隔
writeLines(c("abc","de","f"),con,sep = " ")
#必须手动关闭文件连接
close(con)```

#获取文件和目录信息

file.info("www")

参数是表示文件名称的字符串向量,给出文件的信息

dir()
dir(pattern="txt",ignore.cases=T)

返回一个字符向量,列出在第一个参数指定的目录下的所有文件

recursive=T将目录树显示出来

file.exists()

判断是否存在该文件名

getwd()
setwd()

用于确定或者改变当前工作目录```

相关文章

  • R--输入与输出

    scan()函数 从键盘输入单行数据 w <- readline() 指定提示字符串 inits <- readl...

  • 2020-10-22

    输入与输出 阅读,学习,写日记,写作,健身,饮食,都是输入与输出,输入是为了输出。想输出必要输入,输出是倒逼我成长...

  • 深度思考-输入输出与本质

    深度思考-输入输出与本质 目录 1、输入与输出 2、本质 3、总结 1、输入与输出 输入输出就是现象。 A:我有个...

  • 学习与践行相结合,输入与输出相匹配

    学习与践行相结合,输入与输出相匹配 学习与践行相结合,输入与输出相匹配。 以输入转化为输出,以输出倒逼输入。 只有...

  • 调用高德开放平台-----输入提示API

    调用输入提示API的输入与输出源代码展示 输入 输出

  • Java 扫盲(1.5)输入输出

    读取输入 格式化输出 文件输入与输出

  • 输入与输出

    参加007写作已经有一段时间了,写东西总是从自己出发,把自己的想法倒出来,也不管别人想不想看,算是发泄自己的情绪...

  • 输入与输出

    输入越多越有意义,输出越自然越顺畅 最近,写作群里桃花老师每天发一些有深度的文章,供大家分享,想让大家从中获取更多...

  • 输入与输出

    她的名字叫A,于她而言,生活像高压水泵,被挤压过后,不停的向外输出,将灵魂中积累的东西拼了命往外倾倒,想让...

  • 输入与输出

    自从生完2个孩子以后,生活的重心都在孩子身上,穿好看的衣服,no!贴个面膜,no!安静的看会书,No!生活完全不属...

网友评论

      本文标题:R--输入与输出

      本文链接:https://www.haomeiwen.com/subject/ipnklttx.html