我有一个包含一些列的csv文件,每列都有以不同方式编写的值,例如" Car"和" CAR"。我希望将所有值转换为小写,我使用此代码:
data <- read.table(pipe("cut -d' ' -f6 iis_raw.csv"))
data <- tolower(data)
但结果是一堆像:
70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 61, 61, 61, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 70, 70, 70)"
我做错了什么?
答案 0 :(得分:4)
您似乎正在尝试直接在tolower
上应用data.frame
。您应该使用lapply
代替:
X <- read.table(text = "V1,V2,V3
A,B,C
A,B,D
A,G,X
a,g,f", header = TRUE, sep = ",")
X
# V1 V2 V3
# 1 A B C
# 2 A B D
# 3 A G X
# 4 a g f
tolower(X)
# [1] "c(2, 2, 2, 1)" "c(1, 1, 3, 2)" "c(1, 2, 4, 3)"
lapply(X, tolower)
# $V1
# [1] "a" "a" "a" "a"
#
# $V2
# [1] "b" "b" "g" "g"
#
# $V3
# [1] "c" "d" "x" "f"
X[] <- lapply(X, tolower)
X
# V1 V2 V3
# 1 a b c
# 2 a b d
# 3 a g x
# 4 a g f
答案 1 :(得分:2)
尝试:
data[] <- lapply(data, tolower)
因为我不认为你可以在这样的数据框架上使用tolower
。在这里,我使用CO2
数据集来执行此操作。
CO2[] <- lapply(CO2, tolower)