繁体   English   中英

将 dataframe 列表中的特定列强制“加倍”

[英]Coerce specific column to “double” within a dataframe list

假设我有一个数据框列表

 myList <- list(df1 = data.frame(A = as.character(sample(10)), B =
 rep(1:2, 10)), df2 = data.frame(A = as.character(sample(10)), B = rep(1:2, 10)) )

我想强制每个 dataframe 中的 A 列加倍。

我正在努力:

myList =  sapply(myList,simplify = FALSE, function(x){  
x$A <- as.double(x$A) })

但这会返回强制值,甚至不会返回具有列名的列。

我也尝试过使用 dplyr 和 mutate_if,但没有成功

我们可以在基础lapply中使用带有transformbase R

myList2 <- lapply(myList, transform, A = as.double(A))

或者将maptidyverse中的mutate一起使用

library(dplyr)
library(purrr)
myList2 <- map(myList, ~ .x %>%
                      mutate(A = as.double(A)))

OP 代码中的问题是它没有返回数据,即“x”。

myList2 <-  sapply(myList, simplify = FALSE,
       function(x){  
               x$A <- as.double(x$A)
               x
            })

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM