将函数应用于数据帧变量的子部分并将其保存到原始数据帧的 R 代码

标签 r dataframe apply

我有一个像 mtcars 这样的数据框

我想编写一个函数来搜索 mtcars 中以“c”开头的所有变量,将它们转换为字符并将它们保存回 mtcars。

最佳答案

这是一种方法:

f <- function(x, str = "^var") {
    want <- grep(str, names(x))
    x[, want] <- sapply(x[, want], as.character)
    x
}

[编辑:实现@hadley 在评论中提出的观点的替代版本。]

f <- function(x, str = "^var") {
    want <- grepl(str, names(x))
    x[, want] <- lapply(x[, want], as.character)
    x
}

该函数允许您传递要匹配的字符串,但默认为您请求的 "^var""^" 表示我们要查找以 "var" 开头的名称,而不是任何包含 "var" 的名称。

例子:

> bigdf <- data.frame(var1 = LETTERS[1:3], var2 = letters[1:3], var3 = 1:3, 
+                     stuff = 4:6)
> bigdf
  var1 var2 var3 stuff
1    A    a    1     4
2    B    b    2     5
3    C    c    3     6
> 
> bigdf2 <- f(bigdf)
> bigdf2
  var1 var2 var3 stuff
1    A    a    1     4
2    B    b    2     5
3    C    c    3     6
> str(bigdf2)
'data.frame':   3 obs. of  4 variables:
 $ var1 : chr  "A" "B" "C"
 $ var2 : chr  "a" "b" "c"
 $ var3 : chr  "1" "2" "3"
 $ stuff: int  4 5 6

关于将函数应用于数据帧变量的子部分并将其保存到原始数据帧的 R 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5442101/

相关文章:

python - 将 Pandas Dataframe 或 csv 文件转换为自定义嵌套 JSON

r - 使用 Roxygen2 模板标签

python - 如何在pandas中将一列数据框拆分为多列?

python - 打印 pandas 中 2 个数据帧中所有出现的映射数据

python - 如何在 pandas 数据框中指定列类型

python - 如何记录引发 KeyError 的值

r - 应用到具有多列的 xts

r - 如何根据特定条件删除列?

r - 更改输出打印到控制台的方式

r - 带有重叠子串的 str_count