R:for循环输出仅保存输出数据帧中的最后结果

标签 r for-loop

我有以下 for 循环脚本:

# Create example data
dataKM <- data.frame(x1 = 1:5,    
                     x2 = 6:10,
                     x3 = 11:15)
# Duplicate dataframe
datatest <- dataKM[c(1:3)]

# for loop
for(i in colnames(dataKM[,2:ncol(dataKM)])) {
  # median of each single column of dataframe
  median <- median(dataKM[,i])
  # add column in duplicated dataframe with 'High' or 'low' based on median for each column
  datatest$median[dataKM[,i] <= median ] <- "Low"
  datatest$median[dataKM[,i] > median ] <- "High"
}

我尝试对 dataKM 数据帧的每一列重复 for 循环,并将结果保存为数据集数据帧中的列。我的脚本仅保存最后一次迭代。我可能会得到一个输出,因为我在循环中的每次传递中都覆盖了先前的值。 我想知道如何将所有 for 循环输出保存在各自的列中。 谁能帮我?非常感谢,我希望这对于其他尝试做类似事情的人来说也是有用的。

最佳答案

我们可以只使用lapply函数

datatest <- dataKM[c(2:3)]
datatest[] <- lapply(dataKM[-1] , function(x) ifelse(x <= median(x) , "Low" , "High"))

colnames(datatest) <- c("x2Median" , "x3Median")

cbind(dataKM , datatest)

  • 输出
  x1 x2 x3  x2Median x3Median
1  1  6 11      Low      Low
2  2  7 12      Low      Low
3  3  8 13      Low      Low
4  4  9 14      High     High
5  5 10 15      High     High

如果你坚持使用for循环试试这个

datatest <- dataKM[c(1:3)]

for(i in colnames(dataKM[-1])) {
    median <- median(dataKM[,i])
    datatest[[paste0(i,"median")]][dataKM[,i] <= median ] <- "Low"
    datatest[[paste0(i,"median")]][dataKM[,i] > median ] <- "High"
}

关于R:for循环输出仅保存输出数据帧中的最后结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73177008/

相关文章:

r - block 中的希腊字母未正确显示

R:将 df 中列表的第一个元素提取到新的简化 df 中

python - 文件不会用python写

swift - Xcode 8 在 Swift 3 中的语法变化

java - x[row].length,不明白

python - 在下面的代码中解释打印策略

有人能解释一下C语言中的for循环吗? for(x = i = 0; i <= 100; i += 2, x += i);

r - CompactPDF 的 qpdf.exe?

r - 如何在 dbplyr 中聚合变量 "arrange"?

r - 如何用R中的其他数据帧替换一个数据帧的某些值?