我有一个像 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/