将数据框的列更新为字母的字母位置

时间:2015-03-16 06:32:33

标签: r

尝试将字母字符列更新为相应的字母数字字符:意味着更新" A"到" 1"。

在控制台中传递此内容会更新第5列的sdt数据框

x <- 5
y <- "K"
z <- "1000"
sdt[[x]] <- ifelse(sdt[[x]] == y, z, sdt[[x]]) 

想通过构建这个函数来扩展它:

texp <- function (x, y, z) {

    x <- as.integer(x)
    y <- as.character(y)
    y <- as.character(z)   
    sdt[[x]] <- ifelse(sdt[[x]] == y, z, sdt[[x]] )          
}

然后将其传递给控制台:

texp(5, "A", "1")

没有更新。尝试了各种变体,没有变化(意味着没有更新)。

我错过了什么?

1 个答案:

答案 0 :(得分:2)

# Update column
sdt[[5]] <- match(tolower(sdt[[5]]), letters)

# transform to numeric
sdt[[5]] <- as.numeric(sdt[[5]])

关于您的代码的说明:

  1. 在函数内部,如果要修改现有对象,则为 需要使用<<-代替<-(尽管这应该与。{1}}一起使用 谨慎)。
  2. 正如docendo指出的那样,您通常希望函数返回 而不是修改现有的对象。所以比如你 可以有return(ifelse([your args])),然后使用你的函数 分配新价值。