Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R意外地将字段从CSV文件转换为NA_R - Fatal编程技术网

R意外地将字段从CSV文件转换为NA

R意外地将字段从CSV文件转换为NA,r,R,我试图在R中解析CSV文件。这里是CSV文件的第一行,带有分隔符~。请注意第二个字段位置的iliteral 2015-10-29 18:49:42~i~186.37.108.44~Mozilla/5.0 (Linux; Android 4.1.2; GT-S6810E Build/JZO54K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.94 Mobile Safari/537.36~ea01627ed45116787d3b1

我试图在R中解析CSV文件。这里是CSV文件的第一行,带有分隔符
~
。请注意第二个字段位置的
i
literal

2015-10-29 18:49:42~i~186.37.108.44~Mozilla/5.0 (Linux; Android 4.1.2; GT-S6810E Build/JZO54K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.94 Mobile Safari/537.36~ea01627ed45116787d3b1c0224a44d77~?~CL~1443~219~729~335~3155~9214~5
下面是我试图解析它的方式:

> parsed <- read.csv('i.csv', header=F, sep='~')
> parsed$V2
  [1] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
 [37] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
 [73] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
[109] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
[145] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
[181] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
[217] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
[253] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
[289] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
> table(count.fields('i.csv', sep='~'))

 14 
310 

为了完整起见,我添加了我的评论作为答案

R中几乎所有的读取函数(
read.csv
read.csv2
data
read.fwf
unzip
read.delim
)都在内部调用
read.table
函数

read.table
调用
type.convert
以回收
colClasses
(如果未随函数调用提供)

From
type.convert
at,它说

这主要是read.table的助手函数。给定一个字符向量,它尝试将其转换为逻辑、整数、数字或复数,如果转换失败,则将其转换为因子,除非
as.is=TRUE
。选择可以接受所有非缺失值的第一种类型

因此,
type.convert
将按此特定顺序检查值是逻辑值、整数、实数还是复数,如果排除了所有这些选项,则将值转换为因子(或字符,如果
as.is=T

在R-3.2.1中,()执行
stroc
和可能的
typeconvert
导致
i
转换为
NA
<代码>stroc已在R-3.3.0中更正

在R-3.3.0中,
type.convert('n±ki')
仅当k≠ 一,

发件人:

type.convert(“i”)
现在返回一个因子,而不是实部为零、虚部缺失的复数


试试这个:
parsed@Narendra谢谢!工作起来很有魅力!但是为什么呢?为什么R将
i
解释为NA?如果函数调用中未提供
colClasses
,则这也适用于
df2
read.csv
在内部使用循环列。在R 3.2.2
type.convert(“i”)
中,返回
NA
typeof(type.convert('i'))
返回
“complex”
。这是一只虫子。它将在R 3.3.3中固定。阅读更多我编辑了我的评论。我同时评论了两个问题,结果搞砸了。检查编辑。这是R3.3.0,不是3.3.3。@Narendra比你解释得更清楚。非常有帮助!
> df$V1[1]
[1] 2015-10-29 18:38:04
257 Levels: 2015-10-29 18:38:04 2015-10-29 18:38:07 2015-10-29 18:38:12 ... 2015-10-29 18:51:46
> df$V3[1]
[1] 24.237.158.3
270 Levels: 1.144.97.1 1.187.195.221 1.187.204.84 1.39.12.184 1.39.13.227 1.39.137.12 1.39.33.86 ... 97.44.1.207