R 每两列的乘积(并非所有成对乘积)
这与不同 考虑以下几点:R 每两列的乘积(并非所有成对乘积),r,R,这与不同 考虑以下几点: df <- structure(list(V1 = 10.3333333333333, V2 = 1.66666666666667, V3 = 8.66666666666667, V4 = 2.66666666666667, V5 = 8.76666666666667, V6 = 2, V7 = 6.33333333333333, V8 = 1.66666666666667, V9 = 11, V10 = 2.666666666666
df <- structure(list(V1 = 10.3333333333333, V2 = 1.66666666666667,
V3 = 8.66666666666667, V4 = 2.66666666666667, V5 = 8.76666666666667,
V6 = 2, V7 = 6.33333333333333, V8 = 1.66666666666667, V9 = 11,
V10 = 2.66666666666667, V11 = 4.33333333333333, V12 = 1.66666666666667,
V13 = 9.83333333333333, V14 = 3.33333333333333), class = "data.frame", .Names = c("V1",
"V2", "V3", "V4", "V5", "V6", "V7", "V8", "V9", "V10", "V11",
"V12", "V13", "V14"), row.names = c(NA, -1L))
有没有一种方法可以在不使用循环的情况下执行此操作?这可以满足您的实际要求,给定一个只有一行的
数据。frame
:
v <- as.numeric(df[, seq(1, ncol(df), by=2)] * df[, seq(2, ncol(df), by=2)])
这将为您提供所需的内容,给定一个只有一行的
data.frame
:
v <- as.numeric(df[, seq(1, ncol(df), by=2)] * df[, seq(2, ncol(df), by=2)])
您还可以使用dplyr的滞后/超前功能。例如:
library(dplyr)
(df*lag(df))[,seq(2,length(df),2)]
您还可以使用dplyr的滞后/超前功能。例如:
library(dplyr)
(df*lag(df))[,seq(2,length(df),2)]
只需使用整数序列索引偶数和奇数项
df[,seq(from=1,to=ncol(df),by=2)]*df[,seq(from=2,to=ncol(df),by=2)]
@qdread为什么我没有想到这个?谢谢只需使用整数序列索引偶数和奇数项df[,seq(from=1,to=ncol(df),by=2)]*df[,seq(from=2,to=ncol(df),by=2)]
@qdread为什么我没有想到这个?谢谢