Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 如何从其他两个数据帧中准备第三个数据帧_R_Dataframe - Fatal编程技术网

R 如何从其他两个数据帧中准备第三个数据帧

R 如何从其他两个数据帧中准备第三个数据帧,r,dataframe,R,Dataframe,我使用下面低效的代码构建了data.frame。请注意,如果你能想出一个更好的起点,请包括这个答案 我的代码从前两个数据帧中获取数据,并将它们组合起来,得到第三个数据帧。第一个data.frame是由1和-1组成的网格,表示低值或高值。第二个data.frame包含我计算高或低值所需的所有信息。请注意,每列都有类似的计算,但每列的计算可能不同 ## Exampple Data for Question ## How to prepare a 3rd data.frame from two oth

我使用下面低效的代码构建了data.frame。请注意,如果你能想出一个更好的起点,请包括这个答案

我的代码从前两个数据帧中获取数据,并将它们组合起来,得到第三个数据帧。第一个data.frame是由1和-1组成的网格,表示低值或高值。第二个data.frame包含我计算高或低值所需的所有信息。请注意,每列都有类似的计算,但每列的计算可能不同

## Exampple Data for Question
## How to prepare a 3rd data.frame from two others

## Prepare 1st data.frame, a Yates table

A <- B <- C <- c(1,-1)
yates.1 <- expand.grid(A = A, B = B, C = C)

## Prepare 2nd data.frame with the reaction data
reaction.info <- data.frame(stringsAsFactors = FALSE,
                            factor.name = c("A", "B", "C"),
                            Component = c("Water", "SM", "Reagent"),
                            Mw = c(18, 36.5, 40),
                            centre.point = c(20, 1.4, 1.45),
                            positive.point = c(22, 1.54, 1.595),
                            negative.point = c(18, 1.26, 1.305))

## Prepare 3rd data.frame to be filled

reaction.quants <- as.data.frame(matrix(NA, dim(yates.1)[1], dim(yates.1)[2]))
names(reaction.quants) <- reaction.info[,2]

reaction.quants[yates.1[,1] == 1 ,1] <- round(5 * reaction.info[1,3] * reaction.info[1,5], 3)
reaction.quants[yates.1[,1] == -1 ,1] <- round(5 * reaction.info[1,3] * reaction.info[1,6], 3)

reaction.quants[yates.1[,2] == 1 ,2] <- round(5 * reaction.info[2,3] * reaction.info[2,5], 3)
reaction.quants[yates.1[,2] == -1 ,2] <- round(5 * reaction.info[2,3] * reaction.info[2,6], 3)

reaction.quants[yates.1[,3] == 1 ,3] <- round(5 * reaction.info[3,3] * reaction.info[3,5], 3)
reaction.quants[yates.1[,3] == -1 ,3] <- round(5 * reaction.info[3,3] * reaction.info[3,6], 3)

## three data.frames

yates
reaction.info
reaction.quants
##问题示例数据
##如何从其他两个数据帧中准备第三个数据帧
##准备第一个data.frame,一个Yates表格

A考虑使用
ifelse
逻辑重构,并使用用户定义的方法过滤向量,因为逻辑非常相似,但跨不同的列:


convert\u col感谢您调整我生锈的代码,冻糕!很高兴听到这个消息,也很乐意帮忙。是的,这就是我这些天所做的。