Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/85.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 - Fatal编程技术网

R 如何在数据帧中划分列和以下内容

R 如何在数据帧中划分列和以下内容,r,R,我尝试创建一个函数,将数据框中的每一列除以以下内容,例如,如果我有这样一个数据框: [,1] [,2] [,3] [,4] [,5] [1,] 1 4 7 10 13 [2,] 2 5 8 11 14 [3,] 3 6 9 12 15 我想创建一个函数,将col1除以col2,col3除以col4…col(n-1)除以col(n)到数据帧的末尾,并打印绑定所有输出列表的数据帧 我创建了一个划分列和以下内容的函数,但

我尝试创建一个函数,将数据框中的每一列除以以下内容,例如,如果我有这样一个数据框:

 [,1] [,2] [,3] [,4] [,5]
[1,]    1    4    7   10   13
[2,]    2    5    8   11   14
[3,]    3    6    9   12   15
我想创建一个函数,将col1除以col2,col3除以col4…col(n-1)除以col(n)到数据帧的末尾,并打印绑定所有输出列表的数据帧

我创建了一个划分列和以下内容的函数,但它不是循环函数

bigfunction<-function(data,n){
  n<-1
    data[,1]
    data[,n+1]
    d<-(data[,n]/data[,n+1])
   print(as.list(d))}

bigfunction您可以尝试以下方法:

fun1 <- function(df){
  for (i in 1:ncol(df)){
    if (i%%2 == 1){next}
    else{
      temp <- df[, i-1]/df[, i]
      temp_df <- cbind(temp_df, temp)
    }
  }

  return(temp_df)
}

df <- data.frame(a = 1:3, b = 4:6, c = 7:9, d = 10:12)
temp_df <- data.frame(id = 1:nrow(df))
new_df <- fun1(df)

fun1将该计算矢量化

df <- data.frame(a = 1:3, b = 4:6, c = 7:9, d = 10:12)

df[c(1,3)]/df[c(2,4)]
#     a         c
#1 0.25 0.7000000
#2 0.40 0.7272727
#3 0.50 0.7500000

divdf <- function(data) {
  data[seq(1,ncol(data),2)]/data[seq(2,ncol(data),2)]
}
divdf(df)
#     a         c
#1 0.25 0.7000000
#2 0.40 0.7272727
#3 0.50 0.7500000
df