read.csv将类似于`?`的列名字符替换为`.`,将`-`替换为`...`。

6

我正在使用RStudio,但我的控制台输出被截断了。我找不到如何停止截断(我尝试搜索?options以及在谷歌上搜索了比我想承认的时间长)。

编辑:对不起大家!我最初将长名称命名为'ThisIsAReallyReallyReallyReallyReallyLongName',但只有当名称为'Translation Service Info - Which translation service?'时才出现了问题。我想我找到了问题所在。 ...并没有被截断,而是用....替换了未知字符,例如?-

代码

# Load File
myfile <- read.csv(file="C:\\Users\\wliu\\Desktop\\myfile.csv",
               sep=",", header=TRUE, stringsAsFactors=FALSE, skip=2)

# Get my column names
mycolnames <- colnames(myfile)

# When I request a shorter name, this returns the full name
mycolnames[1]  # Assuming first col is a short name
[1] "ThisIsAShortName"

# However, when I request a longer name, this returns a truncated version
mycolnames[2]  # Assuming second col is a really long name
[1] "ThisIsA...Long...Name"

我想要获取mycolnames[2]的非截断版本(例如,“ThisIsAReallyReallyReallyReallyReallyLongName”)

设置

我使用的是Windows 7 64位,RStudio版本为0.98.1091,R版本为3.0.1(2013-05-16)--“Good Sport”,平台为x86_64-w64-mingw32/x64(64位)。我尝试过打开和关闭“将Git Bash用作Git项目的shell”。

myfile.csv

ThisIsAShortName, Translation Service Info - Which translation service?

23143505, Yes
23143614, No
23143324, Yes

Char Replacement instead of truncating issue


5
嗯,我得出的结果不一样。例如,names(data.frame(ThisIsAReallyReallyReallyReallyReallyLongName=1:10)) 返回未缩短的名称。 - arvi1000
1
@Will 虽然我无法测试它(因为我没有Rstudio),但你是否在使用最新版本的Rstudio。 - akrun
1
我无法在Mac版本0.98.1091上重现。 - IRTFM
1
我也无法复现这个问题。你能否将实际存储在文件中的列名包含进来(例如,myfile.csv 的一个小节选)? - Thomas
3
名称是否被截断了 - 也就是说,在读取数据时,名称中的特殊字符是否会被转换为点号? - user20650
显示剩余3条评论
3个回答

3

这是read.csv的预期行为,而不是R中的截断问题。当文件的列名中存在空格和特殊字符时,read.csv会将它们中的每一个替换为.,除非您指定check.names = FALSE

下面是make.names的一瞥,它是read.table生成的列名。

nm <- "Translation Service Info - Which translation service?"
make.names(nm)
# [1] "Translation.Service.Info...Which.translation.service."

这是来自read.table的相关代码行:

if (check.names) 
        col.names <- make.names(col.names, unique = TRUE)

3
在RStudio中,使用以下菜单:
工具 > 全局选项 > 代码 > 显示
在控制台部分,将 限制在控制台中显示的行长度: 设置为比当前设置的值大得多的数字。
点击“确定”。

2
如何看待以下内容:
options(width=300)

这解决了问题吗?

问题最终是由于我特定文件中的特殊字符引起的。我给出了一个错误的例子(抱歉),后来在意识到我的错误时进行了编辑。我会点赞这个解决方案,因为它可以解决普通文件的截断问题。 - Will

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接