簡體   English   中英

將自定義函數應用於R中的列

[英]apply custom function to columns in R

這是我的代碼,我希望它可以將零插入每列的第二位,但是它不起作用。

insert_zero <- function(smpl_vec){
  return(smpl_vec[2]<-0)
}

my_df = data.frame('col_1'= c(1,2,3), 'col_2'= c(2,3,4))
apply(my_df, 2, insert_zero)

我該如何解決?

PS這只是簡化的示例。 實際功能更加復雜。

您可以將整個第二行替換為零:

my_df[2, ] <- 0 

請注意, my_df是具有行和列的data.frame

您只需使用當前函數在每一列中返回第二個值。 此更改將使第二個值變為0,但仍完整返回每一列:

insert_zero <- function(smpl_vec){
  smpl_vec[2] <- 0
  return(smpl_vec)
}

my_df = data.frame('col_1'= c(1,2,3), 'col_2'= c(2,3,4))
apply(my_df, 2, insert_zero)

return(smpl_vec[2]<-0)不返回修改后的向量

insert_zero <- function(smpl_vec){
  smpl_vec[2]<-0
  return(smpl_vec)
}

感謝您提出這個問題。 在尋找解決方案時,我確實學到了一些新知識。 在為單元格分配新值時

 1)  use '<' twice. Below is the statement
 2)  mention the dataframe row and column numbers as mentioned. Below is the modified code

    insert_zero <- function(smpl_vec){
               my_df[2,smpl_vec] <<- 0

            }

          my_df = data.frame('col_1'= c(1,2,3), 'col_2'= c(2,3,4))
          sapply(1:ncol(my_df), function(smpl_vec) insert_zero(smpl_vec))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM