R_Language 板


LINE

library(igraph) library(tidyverse) library(readr) # 储存最终结果的空dataframe result_df <- data.frame() callback_f <- function(x, pos){ # 测试资料里有variable的变数,须把它拿掉变成square matrix # 才可以做graph.adjacency() x <- x[,-1] # 做你要的计算(graph.adjacency) A <- graph.adjacency(t(x), mode="directed", weighted=T) result_chunk <- cbind(result1=graph.strength(A,mode="in"), result2=graph.strength(A,mode="out")) print(result_chunk) # 印出每个chunk计算的结果,确认答案用,可注解 result_chunk # 回传结果 } # 将运算结果存到result_df result_df <- read_csv_chunked("demo.csv", DataFrameCallback$new(callback_f),chunk_size=4) result_df 程式码好读版 https://i.imgur.com/KYgt8fV.jpg
执行结果 https://i.imgur.com/L9cHuiI.jpg
补充1 个人是建议尽量不要使用把原始资料拆成很多个.csv档 然後再重新读进来做运算 因为档案的读取跟写入(I/O)是最花时间的,资料量大的时候更明显 readr套件提供的read_csv_chunked()即是一次读一小段资料进来 透过callback_f这个参数,定义资料读进来後要做的事情再整合在一起 callback function 可以做任何事 可以写档(像上次你问的一样)、也可以做计算 那既然你还要一个一个读进来计算graph.adjacency,然後还要结果整合成一个df 不如直接写在callback function 里面 补充2 下次请在程式码里加入载入的套件(除非你都使用原生函数) 不是每个人都知道graph.adjacency()是哪个套件提供的function 直接复制你的程式码没办法执行,还要去查才知道是igraph套件 这样会降低版友的回答慾望喔~~ 注意小细节,创造对回答者友善的交流环境:) 感谢您! 小小板工下台一鞠躬 ※ 引述《haitairoutzu (海苔肉粽)》之铭言: : ※ 引述《locka (locka)》之铭言: : : library(tidyverse) : : library(readr) : : # 产生测试资料 : : demo <- tibble(variable=1:16, : : id1=rnorm(16), : : id2=rnorm(16), : : id3=rnorm(16), : : id4=rnorm(16)) : : write_csv(demo, "demo.csv") : : # 使用read_csv_chunked() 每4row切割并输出成一个新的档案 : : callback_f <- function(x, pos) write_csv(x, paste0("chunk_",pos%/%4,".csv")) : : read_csv_chunked("demo.csv", DataFrameCallback$new(callback_f), chunk_size=4 : ) : : 结果如下: : : 原资料 : : https://i.imgur.com/y3GmbSh.jpg
: : 输出4个档案 : : https://i.imgur.com/5b2pzEi.jpg
: ------------------------------------------------------------------- : 谢谢各位的解答,我收益良多 : 如今我有一个衍伸的问题 : 如果我要将这4个分开的矩阵做同样的运算并且将最终运算结果整理到同一个档案中的话 : 除了一笔一笔运算外,有没有比较快的方式? : 我使用的指令如下 : 承续locka的指令 : library(igraph) : #将4个输出档案汇入 : data1 <- read.csv("chunk_0.csv", header=T, sep=",",row.names = 1) : data2 <- read.csv("chunk_1.csv", header=T, sep=",",row.names = 1) : data3 <- read.csv("chunk_2.csv", header=T, sep=",",row.names = 1) : data4 <- read.csv("chunk_3.csv", header=T, sep=",",row.names = 1) : #自定义一个运算函数 : test=function(X){ : A=graph.adjacency(t(X), mode="directed",weighted =T) : result=topov=cbind(result1=graph.strength(A, mode = "in"), : result2=graph.strength(A, mode = "out")) : return(list(result=result)) : } : #将4个汇入档案分别计算 : output1 = test(data1) : output2 = test(data2) : output3 = test(data3) : output4 = test(data4) : #将4个计算结果合并并输出 : result1_all = as.data.frame(cbind(output1$result[,1],output2$result[,1],output : 3$result[,1],output4$result[,1])) : result2_all = as.data.frame(cbind(output$result[,2],output2$result[,2],output3 : $result[,2],output4$result[,2])) : write_csv(result1_all,"result1_all") : write_csv(result2_all,"result2_all") --
QR Code



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 220.129.15.178 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/R_Language/M.1677139357.A.155.html
1F:推 haitairoutzu: 谢谢版主的建议及提醒,我之後会留意 谢谢 02/24 13:31







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:Boy-Girl站内搜寻

TOP