gpt4 book ai didi

r - 将函数应用于名称中包含字符串的所有变量

转载 作者:行者123 更新时间:2023-12-04 11:16:47 25 4
gpt4 key购买 nike

假设你有3个变量,即

VAR1 = 3
VAR2 = 4
VAR3 = 2

有没有办法将名称中带有字符串“VAR”的所有变量转换为字符?

最佳答案

通常人们会尝试将这些变量分组到一个列表中,但如果没有,那么我们可以这样做:

for(nm in ls(pattern = "^VAR")) .GlobalEnv[[nm]] <- as.character(.GlobalEnv[[nm]])

不是全局环境的环境

如果您在不是全局环境的环境中有这些,请按如下方式修改。函数体第一行定义测试数据,下一行将当前环境放入变量e中为方便起见,后面的行执行转换。最后我们检查变量被转换成什么。

f <- function() {
VAR1 <- 1; VAR2 <- 2; VAR3 <- 3 # test data
e <- environment() # current environment
for(nm in ls(pattern = "^VAR")) e[[nm]] <- as.character(e[[nm]])
str(VAR1); str(VAR2); str(VAR3) # check results
}
f()

列表

如果您可以将它们安排在一个列表中,那么:

L <- list(VAR1 = 1, VAR2 = 2, VAR3 = 3) # test data
L <- lapply(L, as.character)

或者如果有一些元素不需要处理:

L2 <- list(VAR1 = 1, VAR2 = 2, VAR3 = 3, other = 4) # test data
ix <- grep("^VAR", names(L2))
L2[ix] <- lapply(L2[ix], as.character)

如果不想覆盖LL2 -- 覆盖会使调试更加困难 -- 然后使用 Lnew <- lapply(L, as.character)L2new <- replace(L2, ix, lapply(L2[ix], as.character))相反。

关于r - 将函数应用于名称中包含字符串的所有变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59410939/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com