我读一个CSV文件为R的每一行语句如下:执行,如果对R中
3,3
3,2
3,3
3,3
3,3
3,3
2,3
1,2
2,2
3,3
我想一个编号分配给各9种独特的可能性,我的数据是(3和3是9,3和2是8,2和3是6等)。我一直试图设计一个嵌套的if语句来评估每一行,在第三列中分配一个数字,并为数据集中的每一行执行此操作。我相信这可以通过apply函数完成,但是我无法在if函数中使用if语句。两列都有可能值1,2或3。这是我的代码迄今,只是想分配一个9至3/3列和0到一切:
#RScript for haplotype analysis
#remove(list=ls())
options(stringsAsFactors=FALSE)
setwd("C:/Documents and Settings/ColumbiaPC/Desktop")
#read in comma-delimited, ID-matched genotype data
OXT <- read.csv("OXTRhaplotype.csv")
colnames(OXT)<- c("OXT1","OXT2")
OXT$HAP <- apply(OXT, 1, function(x) if(x[1]=="3"&&x[2]=="3")x[3]=="9" else 0))
感谢您的任何提前帮助。
非常聪明的解决方案! – 2011-05-04 17:10:08
更好的是,用矩阵子集替换'sapply':尝试'[as.matrix(df)]'。 – Aaron 2011-05-04 17:21:22
+1,你是第一个:-) @Aaron(+1)非常好的评论! – chl 2011-05-04 17:35:54