在两个数据集中使用sapply,R

时间:2015-07-17 13:34:11

标签: r sapply

我确信有一个简单的解决方案,但我使用R相对较新,所以感谢您的耐心等待!

我有两个数据集。第一个(DatA)有44列,长x行。第二个(DatB)有4列和22行。 DatB中的每一行对应于DatA中的两列。我做了一个函数来根据这些信息转换数据。但是,我必须输入22次函数 - 对于22行中的每一行(见下文)。 22行也不错,但最终DatB会非常大,而且必须手动输入所有内容。

a <- c(13,14,15,16)
datA <- matrix(sample(a, 100, replace=TRUE), ncol=2)
datB <- matrix(a, ncol=4)

change <- function(datX, bx, wx, verX,set) {
    ifelse (datX[,bx:wx] == verX[set,1],1,
       ifelse(datX[,bx:wx] == verX[set,2],2,
          ifelse(datX[,bx:wx]==verX[set,3],3,4)))
          }

  set1 <- change(datA,1,2,datB,1)
      set2 <- change(DatA,3,4,DatB,2)
      set3 <- change(DatA,5,6,DatB,3)
      set4 <- change(DatA,7,8,DatB,4)  
      .....
      set22<- change(DatA,43,44,DatB,22)

有没有办法可以使用sapply?如果它是一个数据集中的一列,没问题。我只想使用:sapply(colnames(x), function(y) somefunction(x[,y]))。这对我来说很棘手,因为我试图在DatA中同时循环2列,在DatB中循环1行。

所以更清楚一点,我不需要帮助我的功能,只需要应用于两个数据集。虽然如果一个不同的功能对此更好,我会对它持开放态度。

编辑了

****以包含set1的样本数据。

0 个答案:

没有答案