r - 如何通过配对列来对数据框进行子集化

标签 r dataframe subset

我需要以这样一种方式提取列:我先选择一列,然后再选择相隔 288 列的下一列。例如:

 datanew <- data[, c(8, 296, 9, 297, 10, 298, 11, 299, 12, 300 etc)] 

我需要这样做直到 288、576。

有人可以建议是否有更快的方法吗?

最佳答案

有点像

first_columns <- 8:288
next_columns <- first_columns+288
comb <- c(rbind(first_columns, next_columns))

这是棘手的部分 - 因为 R 以列优先顺序存储矩阵,所以创建一个两行矩阵然后使用 c() 将其折叠为一个向量将生成一个交错向量列号。 (检查 head(comb) 显示 8 296 9 297 10 298 ... 按要求。)

然后执行data[, comb]

另一种更明确的方法:

comb <- rep(NA_real_, 2*(288-7))     ## set up vector (could also use numeric())
odds <- seq(1,length(comb), by=2)
evens <- seq(2, length(comb), by=2)
comb[odds] <- 8:288
comb[evens] <- comb[odds] + 288

关于r - 如何通过配对列来对数据框进行子集化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64733138/

相关文章:

r - 在 R 中选择与时间模式匹配的行

r - [] 和 $ 运算符之间用于子集化的区别

r - 将一行数据变成两行相同的数据R

r - 删除两个ggplot图例中的重复项

python - 将单个数据帧值与同一列中的前 10 个值进行比较

python - 我需要根据列上的值从 Pandas 数据框中制作真值表

c++ - 在不知道实际内部数据类型的情况下返回给定 SEXP 的子集

r - 使用 RODBC 从 Revolution R 查询 Oracle DB

r - 查询区域内的基因

python - Pandas:如何根据条件语句添加新数据行?