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