我试图加载一个文件,文件列用空格分隔,但是有不同的空格数 列之间。因为在我读书的时候,每件空间的R都是另一列并产生额外的空列。有没有其他方法可以毫无问题地加载数据。
示例数据:
AAT_ECOLI 0.49 0.29 0.48 0.50 0.56 0.24 0.35 cp
ACEA_ECOLI 0.07 0.40 0.48 0.50 0.54 0.35 0.44 cp
ACEK_ECOLI 0.56 0.40 0.48 0.50 0.49 0.37 0.46 cp
ACKA_ECOLI 0.59 0.49 0.48 0.50 0.52 0.45 0.36 cp
你可以看到,第一列和第二列之间有3个空格,第2列和第3列有两个空格。
我使用此代码加载数据
xxx <- read.csv("../Datasets/Ecoli/ecoli.data", header=FALSE,sep=" ")
我尝试了3个空间或其他东西,但没有一个工作。
原始数据文件:https://drive.google.com/file/d/0B_XEmkrWR-hCMXVySVI2bU5waGs/view?usp=sharing 谢谢
答案 0 :(得分:3)
您需要设置strip.white=T
和sep=''
:
xxx <- read.csv("c:\\r_stack_overflow\\test.csv", header=FALSE, strip.white=T, sep='')
> xxx
V1 V2 V3 V4 V5 V6 V7 V8 V9
1 AAT_ECOLI 0.49 0.29 0.48 0.5 0.56 0.24 0.35 cp
2 ACEA_ECOLI 0.07 0.40 0.48 0.5 0.54 0.35 0.44 cp
3 ACEK_ECOLI 0.56 0.40 0.48 0.5 0.49 0.37 0.46 cp
4 ACKA_ECOLI 0.59 0.49 0.48 0.5 0.52 0.45 0.36 cp
> dim(xxx)
[1] 4 9
它有效!
<强>更新强>
它也适用于您的数据:
xxx <- read.csv("c:\\r_stack_overflow\\ecoli.data", header=FALSE, strip.white=T, sep='')
输出:
> xxx
V1 V2 V3 V4 V5 V6 V7 V8 V9
1 AAT_ECOLI 0.49 0.29 0.48 0.5 0.56 0.24 0.35 cp
2 ACEA_ECOLI 0.07 0.40 0.48 0.5 0.54 0.35 0.44 cp
3 ACEK_ECOLI 0.56 0.40 0.48 0.5 0.49 0.37 0.46 cp
4 ACKA_ECOLI 0.59 0.49 0.48 0.5 0.52 0.45 0.36 cp
5 ADI_ECOLI 0.23 0.32 0.48 0.5 0.55 0.25 0.35 cp
6 ALKH_ECOLI 0.67 0.39 0.48 0.5 0.36 0.38 0.46 cp
7 AMPD_ECOLI 0.29 0.28 0.48 0.5 0.44 0.23 0.34 cp
8 AMY2_ECOLI 0.21 0.34 0.48 0.5 0.51 0.28 0.39 cp
9 APT_ECOLI 0.20 0.44 0.48 0.5 0.46 0.51 0.57 cp
10 ARAC_ECOLI 0.42 0.40 0.48 0.5 0.56 0.18 0.30 cp
11 ASG1_ECOLI 0.42 0.24 0.48 0.5 0.57 0.27 0.37 cp
12 BTUR_ECOLI 0.25 0.48 0.48 0.5 0.44 0.17 0.29 cp
13 CAFA_ECOLI 0.39 0.32 0.48 0.5 0.46 0.24 0.35 cp
14 CAIB_ECOLI 0.51 0.50 0.48 0.5 0.46 0.32 0.35 cp
15 CFA_ECOLI 0.22 0.43 0.48 0.5 0.48 0.16 0.28 cp
16 CHEA_ECOLI 0.25 0.40 0.48 0.5 0.46 0.44 0.52 cp
17 CHEB_ECOLI 0.34 0.45 0.48 0.5 0.38 0.24 0.35 cp
18 CHEW_ECOLI 0.44 0.27 0.48 0.5 0.55 0.52 0.58 cp
19 CHEY_ECOLI 0.23 0.40 0.48 0.5 0.39 0.28 0.38 cp
20 CHEZ_ECOLI 0.41 0.57 0.48 0.5 0.39 0.21 0.32 cp
21 CRL_ECOLI 0.40 0.45 0.48 0.5 0.38 0.22 0.00 cp
22 CSPA_ECOLI 0.31 0.23 0.48 0.5 0.73 0.05 0.14 cp
23 CYNR_ECOLI 0.51 0.54 0.48 0.5 0.41 0.34 0.43 cp
24 CYPB_ECOLI 0.30 0.16 0.48 0.5 0.56 0.11 0.23 cp
25 CYPC_ECOLI 0.36 0.39 0.48 0.5 0.48 0.22 0.23 cp
26 CYSB_ECOLI 0.29 0.37 0.48 0.5 0.48 0.44 0.52 cp
27 CYSE_ECOLI 0.25 0.40 0.48 0.5 0.47 0.33 0.42 cp
28 DAPD_ECOLI 0.21 0.51 0.48 0.5 0.50 0.32 0.41 cp
29 DCP_ECOLI 0.43 0.37 0.48 0.5 0.53 0.35 0.44 cp
30 DDLA_ECOLI 0.43 0.39 0.48 0.5 0.47 0.31 0.41 cp
31 DDLB_ECOLI 0.53 0.38 0.48 0.5 0.44 0.26 0.36 cp
32 DEOC_ECOLI 0.34 0.33 0.48 0.5 0.38 0.35 0.44 cp
33 DLDH_ECOLI 0.56 0.51 0.48 0.5 0.34 0.37 0.46 cp
34 EFG_ECOLI 0.40 0.29 0.48 0.5 0.42 0.35 0.44 cp
35 EFTS_ECOLI 0.24 0.35 0.48 0.5 0.31 0.19 0.31 cp
36 EFTU_ECOLI 0.36 0.54 0.48 0.5 0.41 0.38 0.46 cp
37 ENO_ECOLI 0.29 0.52 0.48 0.5 0.42 0.29 0.39 cp
38 FABB_ECOLI 0.65 0.47 0.48 0.5 0.59 0.30 0.40 cp
39 FES_ECOLI 0.32 0.42 0.48 0.5 0.35 0.28 0.38 cp
40 G3P1_ECOLI 0.38 0.46 0.48 0.5 0.48 0.22 0.29 cp
41 G3P2_ECOLI 0.33 0.45 0.48 0.5 0.52 0.32 0.41 cp
42 G6PI_ECOLI 0.30 0.37 0.48 0.5 0.59 0.41 0.49 cp
43 GCVA_ECOLI 0.40 0.50 0.48 0.5 0.45 0.39 0.47 cp
44 GLNA_ECOLI 0.28 0.38 0.48 0.5 0.50 0.33 0.42 cp
45 GLPD_ECOLI 0.61 0.45 0.48 0.5 0.48 0.35 0.41 cp
46 GLYA_ECOLI 0.17 0.38 0.48 0.5 0.45 0.42 0.50 cp
47 GSHR_ECOLI 0.44 0.35 0.48 0.5 0.55 0.55 0.61 cp
48 GT_ECOLI 0.43 0.40 0.48 0.5 0.39 0.28 0.39 cp
49 HEM6_ECOLI 0.42 0.35 0.48 0.5 0.58 0.15 0.27 cp
50 HEMN_ECOLI 0.23 0.33 0.48 0.5 0.43 0.33 0.43 cp
51 HPRT_ECOLI 0.37 0.52 0.48 0.5 0.42 0.42 0.36 cp
52 IF1_ECOLI 0.29 0.30 0.48 0.5 0.45 0.03 0.17 cp
53 IF2_ECOLI 0.22 0.36 0.48 0.5 0.35 0.39 0.47 cp
54 ILVY_ECOLI 0.23 0.58 0.48 0.5 0.37 0.53 0.59 cp
55 IPYR_ECOLI 0.47 0.47 0.48 0.5 0.22 0.16 0.26 cp
56 KAD_ECOLI 0.54 0.47 0.48 0.5 0.28 0.33 0.42 cp
57 KDSA_ECOLI 0.51 0.37 0.48 0.5 0.35 0.36 0.45 cp
58 LEU3_ECOLI 0.40 0.35 0.48 0.5 0.45 0.33 0.42 cp
59 LON_ECOLI 0.44 0.34 0.48 0.5 0.30 0.33 0.43 cp
60 LPLA_ECOLI 0.42 0.38 0.48 0.5 0.54 0.34 0.43 cp
61 LYSR_ECOLI 0.44 0.56 0.48 0.5 0.50 0.46 0.54 cp
62 MALQ_ECOLI 0.52 0.36 0.48 0.5 0.41 0.28 0.38 cp
63 MALZ_ECOLI 0.36 0.41 0.48 0.5 0.48 0.47 0.54 cp
64 MASY_ECOLI 0.18 0.30 0.48 0.5 0.46 0.24 0.35 cp
65 METB_ECOLI 0.47 0.29 0.48 0.5 0.51 0.33 0.43 cp
66 METC_ECOLI 0.24 0.43 0.48 0.5 0.54 0.52 0.59 cp
67 METK_ECOLI 0.25 0.37 0.48 0.5 0.41 0.33 0.42 cp
尺寸:
> dim(xxx)
[1] 336 9
答案 1 :(得分:3)
read.table
可以完美地处理您下载的数据集。除file
之外不需要任何参数(除非您不想要因素)。对于实际上以逗号分隔的文件,我倾向于保留read.csv
。
df <- read.table("Downloads/ecoli.data")
str(df)
# 'data.frame': 336 obs. of 9 variables:
# $ V1: Factor w/ 336 levels "AAS_ECOLI","AAT_ECOLI",..: 2 3 4 5 6 8 9 12 ...
# $ V2: num 0.49 0.07 0.56 0.59 0.23 0.67 0.29 0.21 0.2 0.42 ...
# $ V3: num 0.29 0.4 0.4 0.49 0.32 0.39 0.28 0.34 0.44 0.4 ...
# $ V4: num 0.48 0.48 0.48 0.48 0.48 0.48 0.48 0.48 0.48 0.48 ...
# $ V5: num 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 ...
# $ V6: num 0.56 0.54 0.49 0.52 0.55 0.36 0.44 0.51 0.46 0.56 ...
# $ V7: num 0.24 0.35 0.37 0.45 0.25 0.38 0.23 0.28 0.51 0.18 ...
# $ V8: num 0.35 0.44 0.46 0.36 0.35 0.46 0.34 0.39 0.57 0.3 ...
# $ V9: Factor w/ 8 levels "cp","im","imL",..: 1 1 1 1 1 1 1 1 1 1 ...
答案 2 :(得分:0)
可能有更好的方法,但我相信这应该有效:
file_df <- scan('data.txt', what = list("","","","","","","","",""))
df <- data.frame(matrix(unlist(file_df), nrow=4))