首页 > 解决方案 > R - 在 for 循环中按顺序删除列

问题描述

我正在尝试编写一个 for 循环,该循环将删除数据框中的每一列并将修改后的数据框保存到一个新变量中。

此代码说明了我希望循环执行的操作

df1 = df[,-1]
df2 = df[,-2]
df3 = df[,-3]

#failed loop syntax 1 (unexpected "[" in "df[i] = df[,-[")

for (i in 1:3){
   df[i] = df[,-[i]]}

#failed loop syntax 2 (number of items to replace is not a multiple of replacement length)

for (i in 1:3){
   df[i] = df[,-i]}

谁能帮我这个?这是一个例子来说明我想要实现的目标。真实数据集包含 28 行和 64 列。我试图了解删除 64 列中的任何一列如何影响 K 聚类图中 28 个项目的分布。我已经尝试过 PCA 图,但它们对于 64 个向量相对没用。

编辑:

slava-kohut 的代码(粘贴在下面)完美地解决了第一个问题。谁能帮我将以下代码的输出循环到一系列 K 簇图中,其中数据输入列为图标题?

for (i in 1:64){
  assign(paste0(deparse(substitute(mydata)),i),mydata[,-i])
}

标签: rfor-loop

解决方案


我们也可以使用sapply

sapply(1:3, function(x) df[, -x])

推荐阅读