i*****g 发帖数: 14 | 1 Hi all,
I have a question about column mean and correlation computation.
Attached is my data, containing responses for 100 items, and the total score
for each test taker.
I would like to (1) for each item, assign 1 whenever the response is A, 0
for else;(2) compute column mean for each each column; (3) compute
correlation between each item and the total score; (4) repeat (1)-(3) for
response "B", "C", "D" and "E".
Below is my current codes for "A", I can repeat these 4 times for "B", "C",
"D" an | s*****n 发帖数: 2174 | 2 for (res in LETTERS[1:5]){
## your code here
## for everywhere you use "A" before,
## you should refer it as res.
}
score
,
【在 i*****g 的大作中提到】 : Hi all, : I have a question about column mean and correlation computation. : Attached is my data, containing responses for 100 items, and the total score : for each test taker. : I would like to (1) for each item, assign 1 whenever the response is A, 0 : for else;(2) compute column mean for each each column; (3) compute : correlation between each item and the total score; (4) repeat (1)-(3) for : response "B", "C", "D" and "E". : Below is my current codes for "A", I can repeat these 4 times for "B", "C", : "D" an
| q**j 发帖数: 10612 | | s*****n 发帖数: 2174 | 4 我感觉他是想问怎么样能不重复copy前面的code来进行BCDE的操作.
【在 q**j 的大作中提到】 : 我想他的意思是把程序写短写快吧?
| q**j 发帖数: 10612 | 5 可能他没说清楚。要是一个循环就完事了也太简单了。 | s*****n 发帖数: 2174 | 6 也未必就很简单, 有的时候这类事情一层窗户纸.
像上次有人问怎么循环生成 data1, ..., data9 那种.
如果不是提示一下, 自己去发掘, 恐怕得花些时间了.
【在 q**j 的大作中提到】 : 可能他没说清楚。要是一个循环就完事了也太简单了。
| g********r 发帖数: 8017 | 7 你们两位真有闲.我上次的问题还没有解决,再问一次R高手:
如果我要一个非常大的矩阵,R不能分配内存.原则上有两个解决方案:(1)允许矩阵非配
在不连续内存上.这个涉及R的内核,不
知道是不是很难.我想到一个笨办法,就是自己定义一个list,由小矩阵组成.这些小矩阵
拼接成我要得大矩阵.这样所有的简单
运算我都要自己定义wrapper.很麻烦.复杂一点就不能做了. (2) 缩小精度.用16位
float,甚至int.这个也涉及R的内核,要在编
译的时候下手.我不会做.
我怀疑有人早就做过类似的事情了.但是我找不到.大虾们有没有现成答案?
【在 s*****n 的大作中提到】 : 也未必就很简单, 有的时候这类事情一层窗户纸. : 像上次有人问怎么循环生成 data1, ..., data9 那种. : 如果不是提示一下, 自己去发掘, 恐怕得花些时间了.
| f*******r 发帖数: 383 | 8 R分配内存的上限是多少?
我知道matlab可以用虚拟内存,不知R里面有没有类似功能。
【在 g********r 的大作中提到】 : 你们两位真有闲.我上次的问题还没有解决,再问一次R高手: : 如果我要一个非常大的矩阵,R不能分配内存.原则上有两个解决方案:(1)允许矩阵非配 : 在不连续内存上.这个涉及R的内核,不 : 知道是不是很难.我想到一个笨办法,就是自己定义一个list,由小矩阵组成.这些小矩阵 : 拼接成我要得大矩阵.这样所有的简单 : 运算我都要自己定义wrapper.很麻烦.复杂一点就不能做了. (2) 缩小精度.用16位 : float,甚至int.这个也涉及R的内核,要在编 : 译的时候下手.我不会做. : 我怀疑有人早就做过类似的事情了.但是我找不到.大虾们有没有现成答案?
| q**j 发帖数: 10612 | 9 用rpy从python里面叫r干活?
【在 g********r 的大作中提到】 : 你们两位真有闲.我上次的问题还没有解决,再问一次R高手: : 如果我要一个非常大的矩阵,R不能分配内存.原则上有两个解决方案:(1)允许矩阵非配 : 在不连续内存上.这个涉及R的内核,不 : 知道是不是很难.我想到一个笨办法,就是自己定义一个list,由小矩阵组成.这些小矩阵 : 拼接成我要得大矩阵.这样所有的简单 : 运算我都要自己定义wrapper.很麻烦.复杂一点就不能做了. (2) 缩小精度.用16位 : float,甚至int.这个也涉及R的内核,要在编 : 译的时候下手.我不会做. : 我怀疑有人早就做过类似的事情了.但是我找不到.大虾们有没有现成答案?
| g********r 发帖数: 8017 | 10 不是上限的问题.基于Unix的没有上限.如果我分配很多小矩阵,可以占满整个内存.问题
是每个矩阵的内存必须连续.就算有
足够的空内存,也可能分配大矩阵失败.因为有断点.
【在 f*******r 的大作中提到】 : R分配内存的上限是多少? : 我知道matlab可以用虚拟内存,不知R里面有没有类似功能。
| | | g********r 发帖数: 8017 | 11 我能理解为什么这样,因为R的矩阵都是指针操作.这样非常快,但是不能跳.
【在 g********r 的大作中提到】 : 不是上限的问题.基于Unix的没有上限.如果我分配很多小矩阵,可以占满整个内存.问题 : 是每个矩阵的内存必须连续.就算有 : 足够的空内存,也可能分配大矩阵失败.因为有断点.
| q**j 发帖数: 10612 | 12 还是内存不够大。否则怎么样都行。
【在 g********r 的大作中提到】 : 不是上限的问题.基于Unix的没有上限.如果我分配很多小矩阵,可以占满整个内存.问题 : 是每个矩阵的内存必须连续.就算有 : 足够的空内存,也可能分配大矩阵失败.因为有断点.
| g********r 发帖数: 8017 | 13 这个....我机器上12G空闲的时候,分配2G就会失败.有点怀疑是不是各个内存条之间的
地址不是连续的?? 再大实在买不起了.
【在 q**j 的大作中提到】 : 还是内存不够大。否则怎么样都行。
| s*****n 发帖数: 2174 | 14 这个我就不懂了, 没怎么考虑过R的深层问题.
【在 g********r 的大作中提到】 : 你们两位真有闲.我上次的问题还没有解决,再问一次R高手: : 如果我要一个非常大的矩阵,R不能分配内存.原则上有两个解决方案:(1)允许矩阵非配 : 在不连续内存上.这个涉及R的内核,不 : 知道是不是很难.我想到一个笨办法,就是自己定义一个list,由小矩阵组成.这些小矩阵 : 拼接成我要得大矩阵.这样所有的简单 : 运算我都要自己定义wrapper.很麻烦.复杂一点就不能做了. (2) 缩小精度.用16位 : float,甚至int.这个也涉及R的内核,要在编 : 译的时候下手.我不会做. : 我怀疑有人早就做过类似的事情了.但是我找不到.大虾们有没有现成答案?
| g********r 发帖数: 8017 | 15 haha. 外事不决问google. 真让我找到了.有个library叫bigmemory.
【在 s*****n 的大作中提到】 : 这个我就不懂了, 没怎么考虑过R的深层问题.
| f*******r 发帖数: 383 | 16 我感觉如果是指针操作,那也应该是操作系统的事情对用户(比如R等
应用程序)来说是透明的。我觉得R应该是允许一个矩阵占有不连续内
存的,我曾经运行过大程序占用内存达25G(主要是一个大的矩阵),很
显然当时系统(总内存32G,四台机器的CLUSTER,同时还有别的几个大
的程序在运行)运行了很长时间内部不可能有那么一大块连续的空的内
存。
当然每次系统分配内存时是按照BLOCK为单位的,一个BLOCK的内存必
须是连续的。估计你碰到的情况是系统计算了所需BLOCK数目然后发现
不够,由于很多内存碎片的存在。
【在 g********r 的大作中提到】 : 我能理解为什么这样,因为R的矩阵都是指针操作.这样非常快,但是不能跳.
| q**j 发帖数: 10612 | 17 恭喜。用完讲讲经验。
【在 g********r 的大作中提到】 : haha. 外事不决问google. 真让我找到了.有个library叫bigmemory.
| l******d 发帖数: 1633 | 18 能讲讲你用的什么系统么?
unix? 64-bit R?
【在 f*******r 的大作中提到】 : 我感觉如果是指针操作,那也应该是操作系统的事情对用户(比如R等 : 应用程序)来说是透明的。我觉得R应该是允许一个矩阵占有不连续内 : 存的,我曾经运行过大程序占用内存达25G(主要是一个大的矩阵),很 : 显然当时系统(总内存32G,四台机器的CLUSTER,同时还有别的几个大 : 的程序在运行)运行了很长时间内部不可能有那么一大块连续的空的内 : 存。 : 当然每次系统分配内存时是按照BLOCK为单位的,一个BLOCK的内存必 : 须是连续的。估计你碰到的情况是系统计算了所需BLOCK数目然后发现 : 不够,由于很多内存碎片的存在。
| f*******r 发帖数: 383 | 19 GNU/Linux (x86_64-->64 bit machine)
4-machine cluster (AMD Opteron(tm) Processor 848)
【在 l******d 的大作中提到】 : 能讲讲你用的什么系统么? : unix? 64-bit R?
| l******d 发帖数: 1633 | 20 你自己编译的64bit的R?
【在 f*******r 的大作中提到】 : GNU/Linux (x86_64-->64 bit machine) : 4-machine cluster (AMD Opteron(tm) Processor 848)
| f*******r 发帖数: 383 | 21 用的是学校的机器。
【在 l******d 的大作中提到】 : 你自己编译的64bit的R?
|
|