【发布时间】:2016-04-13 10:21:54
【问题描述】:
我有一个数据集,其中包含列名 blactamases。在 .csv 文件中,名称的“beta”部分作为一个被误解的符号导入到 R 中(看起来像一个 I,旁边有一个方形符号)。
由于我定期导入此文件,我有一个源文件来执行一些基本的数据清理并准备数据集以进行分析。我包含了一行代码来将列名转换为更用户友好的名称,见下文:
colnames(df)[which(names(df) == "î²lactamases")] <- "blactamases"
如果我自己运行这行代码,这运行良好。但是,当我尝试运行源文件时,它在这一行失败。没有产生错误,我知道它失败的唯一原因是因为列名没有更改,并且引用修改后的列名的后续操作不起作用。
更奇怪的是,源文件中这一行下面的行使用完全相同的过程来更改另一个列名,并且在获取时运行良好:
colnames(df)[which(names(df) == "eae1")] <- "eaeseq"
任何想法都将不胜感激 - 我需要在 î² 之前添加一些内容以使其从源代码正确运行吗?
我正在使用 R Studio 0.99.489 和 R 版本 3.2.3。
> sessionInfo()
R version 3.2.3 (2015-12-10)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 7 x64 (build 7601) Service Pack 1
locale:
[1] LC_COLLATE=English_United Kingdom.1252 LC_CTYPE=English_United Kingdom.1252 LC_MONETARY=English_United Kingdom.1252
[4] LC_NUMERIC=C LC_TIME=English_United Kingdom.1252
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] digest_0.6.8 foreign_0.8-66 xlsx_0.5.7 xlsxjars_0.6.1 rJava_0.9-7 SnowballC_0.5.1
[7] wordcloud_2.5 RColorBrewer_1.1-2 tm_0.6-2 NLP_0.1-8 rsatscan_0.3.9200 surveillance_1.10-0
[13] polyCub_0.5-2 xtable_1.8-0 epitools_0.5-7 ggmap_2.5.2 ggplot2_1.0.1 geosphere_1.4-3
[19] rgdal_1.1-1 sp_1.2-1 MRAtools_0.6.6 zoo_1.7-12 stringi_1.0-1 stringdist_0.9.4
[25] reshape2_1.4.1 dplyr_0.4.3 plyr_1.8.3 data.table_1.9.6 readxl_0.1.0 RPostgreSQL_0.4
[31] DBI_0.3.1 RODBCext_0.2.5 RODBC_1.3-12
loaded via a namespace (and not attached):
[1] slam_0.1-32 lattice_0.20-33 colorspace_1.2-6 mgcv_1.8-10 chron_2.3-47 spatstat_1.43-0
[7] jpeg_0.1-8 stringr_1.0.0 munsell_0.4.2 gtable_0.1.2 RgoogleMaps_1.2.0.7 mapproj_1.2-4
[13] parallel_3.2.3 proto_0.3-10 Rcpp_0.12.2 tensor_1.5 scales_0.3.0 abind_1.4-3
[19] deldir_0.1-9 rjson_0.2.15 png_0.1-7 RJSONIO_1.3-0 polyclip_1.3-2 grid_3.2.3
[25] tools_3.2.3 magrittr_1.5 maps_3.0.1 goftest_1.0-3 MASS_7.3-45 Matrix_1.2-3
[31] assertthat_0.1 R6_2.1.1 nlme_3.1-122
【问题讨论】:
-
可能与您使用的编码有关,在 RStudio 中,文件下有一个选项,使用编码重新打开,也许可以尝试使用其中的一些,看看它是否有效
-
您能否尝试
read.csv(..., encoding = "Windows-1252")并再次使用“latin1”,最后使用“UTF-8”,看看是否有任何解决问题?我对法裔加拿大人有类似的问题。我在我的笔记本里放了一些处理它的策略:bertelsen.ca/invalid-multibyte-string -
谢谢 - 我尝试了所有 3 和 UTF-8 将其正确编码为 beta 标志。我还按照@RyanCastner 的建议选择了 UTF-8 对脚本进行编码。不幸的是,这仍然像以前一样工作 - 突出显示运行代码的行工作正常,但从源命令运行仍然失败。
-
(即未编辑列名,就好像在获取脚本时忽略了该行代码)。
-
更新:原来脚本没有使用 UTF-8 编码正确重新加载;显式调用
source('C:/R/Rscripts/CleaningCode.R', encoding = 'UTF-8')使脚本完美运行。
标签: r rename variable-names