首页 > 解决方案 > R 中的函数、For 循环和条件

问题描述

我得到了一个 .csv 数据集,我想使用 for 循环为数据建立一个函数。数据集有 5 列,数据由因子或数字组成。如果数据是一个因素,什么都不应该做,只需打印出列的名称和它的类。如果数据是数字,则打印出名称、类以及两个函数(我事先已经创建)。

我对如何组织函数/for循环的语法有点迷茫。

p.data <- read.csv("file.csv")
function(
x){
for.loop.variable <- for(index in data.csv){
if (class(x)) == "factor" 
{cat("Name of Column is:", names(x*), "\n", 
"Class of Column is :" , (class(x)))
} else {
cat("Name of Column is:", names(x*), "\n", 
"Class of Column is :" , (class(x)),"\n", 
"Function 1 is :", function.1(x), "\n",
"Function 2 is :", function.2(x), "\n")
}
}
}
return (for.loop.variable)

认为这是正确的设置,但我有 3 个问题我似乎无法弄清楚:

1- for 循环迭代如何发挥作用?我根本没有在条件句中引用它,我不知道该怎么做?

2*- 如何调用/打印列名?我不认为它是名称(x),但我不太确定除此之外它会是什么。

3- return () 是否正确?它是否应该从变量中返回整个 for 循环(一旦我弄清楚如何将它与实际问题联系起来)?

请让我知道在哪里修复错误,以便我可以正确学习。

这是示例代码的图像,因此就括号/语法而言,它更容易阅读: 在此处输入图像描述

标签: rfunctionfor-loopif-statement

解决方案


我认为这个问题是出于教育目的,因此提出了一个简单的 for 循环:

class_print <- function(df){

  for(i in 1:ncol(df)){
    if(is.factor(df[,i])){
      print(paste0("Name of column is ", names(df[i]), "class is factor ",collapse = ""))
    }
    else{
     print(paste("Name of column is ", names(df[i]),"class is ", class(df[,i]),collapse=""))
    }

  }

}

测试:

class_print(iris)
[1] "Name of column is  Sepal.Length class is  numeric"
[1] "Name of column is  Sepal.Width class is  numeric"
[1] "Name of column is  Petal.Length class is  numeric"
[1] "Name of column is  Petal.Width class is  numeric"
[1] "Name of column is Speciesclass is factor "

推荐阅读