R--输入与输出

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()

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,686评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,668评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,160评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,736评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,847评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,043评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,129评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,872评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,318评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,645评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,777评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,470评论 4 333
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,126评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,861评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,095评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,589评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,687评论 2 351

推荐阅读更多精彩内容