根据条件修改数据框的所有行,该数据框本身就是列表的元素

发布于 2025-01-17 00:11:50 字数 1682 浏览 1 评论 0原文

我有一个包含 2 个元素的列表,其中第二个元素是数据框。 如果满足条件,我想替换数据帧之一列的所有值 列表内容 则要更改其值的变量称为“CODE_PAYS_LIV”

如果“CODE_PAYS_LIV”列中的值属于以下列表的元素, : c("AT","BE", "CH", "CZ", "DE", "DK","ES", "FR", "GB", "HR", "HU", "IE", “IT”,“NL”,“NO”,“PL”,“PT”,“SE”,“SI”,“SK”))

必须更改为“EUR”

我尝试将这些更改更改为两个不同的方法(没有成功) 直接调用函数,或使用 lapply 来应用函数

我首先定义一个函数来测试条件是否为真

modif_res_veh <-function(fichier_veh) {

       ii<-1 

       nb_mesh <- nrow(fichier_veh)

      for (ii in 1:nb_mesh) {

           if (fichier_veh$CODE_PAYS_LIV %in% c("AT","BE" , "CH" , "CZ" , "DE" , "DK" , "ES" , "FR"))                                 
                   {fichier_veh$CODE_PAYS_LIV <- "EUR" }

       }
}

,然后我尝试调用此函数

<>第一次测试使用: Res_vehicule [[2]] <- modif_res_veh(Res_vehicule [[2]])

  this gives me a list of 1 empty element

<>;使用以下命令进行第二次测试:

Res_vehicule <- lapply(Res_vehicule[[2]] ,modif_res_veh)

  but i have this error message :

1:nb_mesh 中的错误:长度为 0 的参数

<>第三次测试通过将数据帧的行数作为函数的参数传递:

modif_res_veh <-function(fichier_veh, nb_mesh) {

       ii<-1 

      for (ii in 1:nb_mesh) {

           if (fichier_veh$CODE_PAYS_LIV %in% c("AT","BE" , "CH" , "CZ" , "DE" , "DK" , "ES" , "FR"))                                 
                   {fichier_veh$CODE_PAYS_LIV <- "EUR" }

       }
}

     nb_mesh <- nrow(Res_vehicule [[2]]) 

    Res_vehicule [[2]] <- modif_res_veh(Res_vehicule [[2]],nb_mesh)


but this gives me a list of 1 empty element again

非常感谢您的帮助

I have a list of 2 elements whose second is a dataframe.
I want to replace for all values ​​of one of the columns of the dataframe, if a condition is met
list content
the variable whose values ​​are to be changed is called "CODE_PAYS_LIV"

If the value in column "CODE_PAYS_LIV" belongs to an element of the following list :
c("AT","BE" , "CH" , "CZ" , "DE" , "DK" ,"ES" , "FR" , "GB" , "HR" , "HU" , "IE" ,
"IT" , "NL" , "NO" , "PL" , "PT" , "SE" , "SI" , "SK"))

it have to be change to "EUR"

I have tried making these changes two different ways (without success)
directly calling a function, or using lapply to apply the function

I started by defining a function that tests if the condition is true

modif_res_veh <-function(fichier_veh) {

       ii<-1 

       nb_mesh <- nrow(fichier_veh)

      for (ii in 1:nb_mesh) {

           if (fichier_veh$CODE_PAYS_LIV %in% c("AT","BE" , "CH" , "CZ" , "DE" , "DK" , "ES" , "FR"))                                 
                   {fichier_veh$CODE_PAYS_LIV <- "EUR" }

       }
}

and then I have tried ti call this function

<> First test by using :
Res_vehicule [[2]] <- modif_res_veh(Res_vehicule [[2]])

  this gives me a list of 1 empty element

<> second test by using :

Res_vehicule <- lapply(Res_vehicule[[2]] ,modif_res_veh)

  but i have this error message :

Error in 1:nb_mesh : argument of length 0

<> third test by passing the number of rows of the dataframe as a parameter of the function :

modif_res_veh <-function(fichier_veh, nb_mesh) {

       ii<-1 

      for (ii in 1:nb_mesh) {

           if (fichier_veh$CODE_PAYS_LIV %in% c("AT","BE" , "CH" , "CZ" , "DE" , "DK" , "ES" , "FR"))                                 
                   {fichier_veh$CODE_PAYS_LIV <- "EUR" }

       }
}

     nb_mesh <- nrow(Res_vehicule [[2]]) 

    Res_vehicule [[2]] <- modif_res_veh(Res_vehicule [[2]],nb_mesh)


but this gives me a list of 1 empty element again

thank you very much for your help

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

忆梦 2025-01-24 00:11:50

一种选择:

flag_EU_members <- function(country_vector){
    ifelse(
        country_vector %in% c("AT", "BE", "CH"), ## etc.
        'EUR',
        country_vector
    )
}

Res_vehicule[[2]]$CODE_PAYS_LIV <-
    flag_EU_members(Res_vehicule[[2]]$CODE_PAYS_LIV)

one option:

flag_EU_members <- function(country_vector){
    ifelse(
        country_vector %in% c("AT", "BE", "CH"), ## etc.
        'EUR',
        country_vector
    )
}

Res_vehicule[[2]]$CODE_PAYS_LIV <-
    flag_EU_members(Res_vehicule[[2]]$CODE_PAYS_LIV)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文