Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 将函数应用于数据帧列的每个元素_R_For Loop_Apply_Lapply_Sapply - Fatal编程技术网

R 将函数应用于数据帧列的每个元素

R 将函数应用于数据帧列的每个元素,r,for-loop,apply,lapply,sapply,R,For Loop,Apply,Lapply,Sapply,我是R的新手,我有一个问题,我有一个数据框,我想把这个函数应用到G3列的每个元素上 fun_pass <- function(calif){ if(calif >= 10){ x <- 1 }else{ x <-0 } return(x) } fun_pass=10){ x问题在于未矢量化的if/else。如果我们将函数更改为ifelse,它将起作用。另一个问题是apply带有MARGIN它需要一个data.frame/matrix。这里

我是R的新手,我有一个问题,我有一个数据框,我想把这个函数应用到G3列的每个元素上

fun_pass <- function(calif){
  if(calif >= 10){
    x <- 1
  }else{
    x <-0
  }
  return(x)
}
fun_pass=10){

x问题在于未矢量化的
if/else
。如果我们将函数更改为
ifelse
,它将起作用。另一个问题是
apply
带有
MARGIN
它需要一个data.frame/matrix。这里,它正在提取一个
向量
'G3'

fun_pass <- function(calif) ifelse(calif >= 10, 1, 0)
如果是单列,请使用

mat_data$pass <- fun_pass(mat_data$G3)
mat_data$pass尝试:


mat_数据$pass您能
dput(mat_数据)吗
在您的控制台中,将输出粘贴到问题中以帮助您。还有其他方法可以达到您想要的!类似于?@Alo是的,如果您检查我创建的
fun\u pass,它将使用
ifelse
而不是
if/else
if/else
需要单个元素,即长度标量1@Alo我想你正在将自己的函数与
if/else
一起使用。如果将其更改为我显示的函数,则不会发出警告提示,它可以工作c:
fun_pass <- function(calif) as.integer(calif >= 10)
mat_data$pass <- fun_pass(mat_data$G3)
mat_data$pass <- sapply(X = mat_data$G3, FUN  = fun_pass)
mat_data <- data.frame(G3 = 1:20)
mat_data$pass <- sapply(X = mat_data$G3, FUN  = fun_pass)

mat_data

#     G3 pass
# 1   1    0
# 2   2    0
# 3   3    0
# 4   4    0
# 5   5    0
# 6   6    0
# 7   7    0
# 8   8    0
# 9   9    0
# 10 10    1
# 11 11    1
# 12 12    1
# 13 13    1
# 14 14    1
# 15 15    1
# 16 16    1
# 17 17    1
# 18 18    1
# 19 19    1
# 20 20    1