我对R很陌生,并且在特定问题上挣扎。我需要使用从SQL数据库返回的1个变量迭代数据帧,这样我最终可以使用1变量中的信息发出其他SQL查询。我需要帮助了解如何做到这一点。
这就是我所拥有的
> dt
Col
1 5D2D3F03-286E-4643-8F5B-10565608E5F8
2 582771BE-811E-4E45-B770-42A98EB5D7FB
3 4EB4D553-C680-4576-A854-54ED817226B0
4 80D53D5D-80D1-4A60-BD86-C85F6D53390D
5 9EF6CABF-0A4F-4FA9-9FD9-132589CAAC31
尝试使用它时,如上所述打印整个列表
> dt[1]
Col
1 5D2D3F03-286E-4643-8F5B-10565608E5F8
2 582771BE-811E-4E45-B770-42A98EB5D7FB
3 4EB4D553-C680-4576-A854-54ED817226B0
4 80D53D5D-80D1-4A60-BD86-C85F6D53390D
5 9EF6CABF-0A4F-4FA9-9FD9-132589CAAC31
当尝试通过dt [1]进行访问时,它会带来额外的不需要的信息。
> a<-dt[1,]
> a
[1] 5D2D3F03-286E-4643-8F5B-10565608E5F8
5 Levels: 4EB4D553-C680-4576-A854-54ED817226B0 ... 9EF6CABF-0A4F-4FA9-9FD9-132589CAAC31
我需要仅隔离&#39; 5D2D3F03-286E-4643-8F5B-10565608E5F8&#39;信息而不是&#39; 5级......&#39;。
我确信这很简单,我无法找到它。任何帮助表示赞赏! 谢谢!
答案 0 :(得分:1)
您需要解决两个问题。一个是你想要的是字符数据,而不是一个因子变量(一个因子本质上是一个类别变量)。另一个是你想要一个简单的值向量,而不是data.frame
。
1)要将第一列作为向量,请使用双括号或$
表示法:
a <- dt[[1]]
a <- dt[['Col']]
a <- dt$Col
你的符号dt[1,]
确实实际上也将列作为向量返回,但是使用了[
data.frame
dt[i,j]
方法的默认情况&#34;降&#34;使用双索引表单dt[i]
时它对向量的值,但在使用单索引表单[
时则不是这样:
当
[[
和x[i]
与单个向量索引(x[[i]]
或data.frame
)一起使用时,它们会将数据框编入索引,就好像它是一个列表一样。在此用法中,将忽略drop参数,并显示警告。
想想&#34;放弃&#34;比如将数据拆箱 - 而不是使用单个列获取a <- as.character(dt[[1]])
a <- as.character(dt[['Col']])
a <- as.character(dt$Col)
,您只需自己获取列数据。
2)要转换为字符数据,请使用@akrun或@Vlo注释中的一条建议:
#!/usr/bin/python
import subprocess
import os
f = open('test', 'r')
for i in f.readlines():
cmd = '/usr/sbin/nsrmm -d -S ' + i
cmd1 = cmd.split( )
print cmd1
p = subprocess.Popen(cmd1, stdout=subprocess.PIPE, stderr=subprocess.PIPE, stdin=subprocess.PIPE)
p.stdin.write('y')
或使用您用于制作SQL查询的API - 或者读取查询结果 - 而不是首先将字符串转换为因子。