2017-07-04 80 views
0

導入tibble。許多數字列被導入爲「chr」。我想這是因爲它們包含「,」而不是「。」。 我的目標是編寫一個循環遍歷所需列的名稱,用「。」替換「,」。並將列轉換爲「num」。 小例如:

data <- data.frame("A1" =c("2,1","2,1","2,1"), "A2" =c("1,3","1,3","1,3"), 
        stringsAsFactors = F) %>% as.tibble() #example data 
colname <- c("A1", "A2") #creating variable for loop 

for(i in colname) { 
    nam <- paste0("data$", i) 
    assign(nam, as.numeric(gsub(",",".", eval(parse(text = paste0("data$",i)))))) 
    } 

代替覆蓋現有柱,R創建一個新的變量:

data$A1 # that's the existing column as part of the tibble 
[1] "2,1" "2,1" "2,1" 
`data$A1` # thats just a new variable. mind the little`` 
[1] 2.1 2.1 2.1 

我也試圖分配(< - )通過EVAL新數值,但也不不工作。

eval(parse(text = paste0("data$", i))) <- as.numeric(
gsub(",",".", eval(parse(text = paste0("data$",i))))) 

Error: target of assignment expands to non-language object 

有關如何轉換的任何建議?我想與其他列彙總爲新變量的問題相同。這個變量也應該是現有的tibble的一部分。我可以親手做。這需要很多時間,可能會產生很多錯誤。 非常感謝! 山姆

回答

0

正如你已經與tidyverse工作,你可以使用dplyr::mutate_at並且您已經定義的變量colname

data %>% 
    mutate_at(.vars = colname, 
      .funs = function(x) { as.numeric(gsub(",", ".", x)) }) 
相關問題